每当我使用@Html.EditorForModel()
后,标准模板都显示在asp.net mvc
Asp.net MVC模板中的默认值
<div class="editor-label">
<label for="[MY-PROPERTY]">MY-PROPERTYNAME</label>
</div>
<div class="editor-field">
<input id="[MY-PROPERTYID]" name="MY-PROPERTYNAME" type="text" value="">
<span class="field-validation-valid" data-valmsg-for="MY-PROPERTYNAME" data-valmsg-replace="true"></span>
</div>
我想自定义此HTML的格式!!
@Html.EditorForModel("MY-TEMPLATE")
@Html.EditorFor(p => p.MY-PROPERTY, "MY-TEMPLATE")
Views\{CONTROLLER}\EditorTemplates\{CLASSNAME\TYPE}
Views\Shared\EditorTemplates\{CLASSNAME\TYPE}
无需为此完成整个项目!
@Html.EditorForModel()
时,每个属性都会生成HTML自定义!! 新模板将是这样的:
<div class="control-group">
@Html.LabelFor(p => p.PROPERTY, new { @class = "control-label" })
<div class="controls">
@Html.EditorFor(p => p.PROPERTY)
<span class="help-inline"></span>
</div>
</div>
答案 0 :(得分:2)
您可以为Object.cshtml
文件夹创建Views\Shared\EditorTemplates\
模板,@Html.EditorForModel()
如果找不到更具体的模板,则会使用该模板(例如名为classname.cshtml
的模板)
您可以进一步阅读Brad Wilson的Custom Object Templates
答案 1 :(得分:0)
为什么要重写ASP.NET MVC?重建Microsoft(具有大规模生产能力)过去5年创造的东西,这不是一件大事吗?
我建议(显然远不是唯一的生活方式)是根据您的需要定义尽可能多的DisplayTemplates
和EditorTemplates
,并使用它完成。
根据定义,框架是可扩展的。你要做的是更换其中一根主杆。我不知道它是否值得。 - 只是一个意见。
希望这有帮助。
答案 2 :(得分:0)
我试图做同样的事情。以某种方式重写或覆盖Editor,EditorFor或EditorForModel方法,因为我想要更改HTML输出。我发现这篇文章可能有所帮助:http://www.headcrash.us/blog/2011/09/custom-display-and-editor-templates-with-asp-net-mvc-3-razor/
正如@archil所说。您可以编写自己的对象模板,但重要的是它似乎在所有情况下都使用。即使你有一个特定类型的模板,这个模板也被用作&#34; master&#34;模板。