如何摆脱 EditorForModel 中的默认标签

How to get rid of default label in EditorForModel

我有一个正在处理的 ASP.Net MVC 项目,我有一个模型,我想将其转化为我的形式。我想为此使用 EditorForModel(),因为如果我稍后决定向模型添加 add/remove 属性,我希望它自动将字段添加到表单。

我遇到的问题是模型编辑器获取每个 属性 并创建以下 HTML:(这只是通用的。不是实际代码)

<div class="editor-label"><label>Label Title</label></div>
<div class="editor-field"><input type="type"/></div

但是我希望它为每个字段做的是:

<div class="editor-field">
    <label>Label Title</label>
    <input type="type"/>
</div>

但如果我尝试在编辑器模板中执行此操作,我会得到以下信息:

<div class="editor-label"><label>Label Title</label></div>
<div class="editor-field">
    <label>Label Title</label>
    <input type="type"/>
</div>

如何让 EditorForModel() 不创建自己的标签字段?我知道我总是可以将它的样式设置为隐藏在 CSS 中,但如果它一开始就不存在就好了,这样我就可以限制代码混乱。

提前致谢。

PS:我也试过使用 [HiddenInput(DisplayValue = false)] 但这只会隐藏整个字段而不仅仅是标签。

您需要在编辑器模板 cshtml 中编写此代码才能使其按预期工作:

@foreach (var property in ViewData.ModelMetadata.Properties)
{
    <div class="editor-field">
        <label>@property.GetDisplayName()</label>
        @Html.Editor(property.PropertyName)
    </div>
}