2017-04-30 48 views
1

我有一个ASP.Net MVC项目,我正在努力,我有一个模型,我想变成我的形式。我想为此使用EditorForModel(),因为如果我决定稍后向模型添加/删除属性,我希望它自动向表单中添加字段。如何摆脱EditorForModel中的默认标签

我遇到的问题是,编辑器模型考虑每个属性,并创建下面的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)],但这只是隐藏了整个字段而不仅仅是标签。

回答

1

你需要在你的编辑模板CSHTML写这得到它按预期工作:

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

我把这个在string.cshtml和它做它每串这个多次跑了一个非常奇怪的事情属性。它是否需要进入它自己的模型编辑器模板而不是类型编辑器模板。 例如,我的模型有4个字符串属性和2个整数属性。此代码是否进入ModelName.cshtml或String.cshtml? –

+0

如果你有一个特定的模型,然后创建模型'[TypeName] .chstml'编辑器模板。如果它是通用的,则在同一个文件夹中创建“Object.cshtml”模板。在你看来,你应该只调用'@ Html.EditorForModel()'来完成它的工作。 – CodeNotFound

+0

该模板必须位于EditorTemplates文件夹中。 – CodeNotFound