您的编辑器模板中有多少代码?
我通常做的是为所有编辑模板共享一个布局,它包含我的模板的大部分常用HTML,然后(通常)只剩下一行代码用于实际类型特定的HTML 。
例如,下面是一个布局编辑器模板的一个简化版本:
_Layout.cshtml
<p>
@Html.LabelFor(m => m):
</p>
<p>
@RenderSection("value")
</p>
<p>
@Html.ValidationMessageFor(m => m)
</p>
然后这里有一些特定类型的模板:
字符串.cshtml
@model System.String
@{
Layout = "~/Views/Shared/EditorTemplates/_Layout.cshtml";
}
@section value{
@Html.TextBoxFor(m => m)
}
Password.cshtml
@model System.String
@{
Layout = "~/Views/Shared/EditorTemplates/_Layout.cshtml";
}
@section value{
@Html.PasswordFor(m => m)
}
啊,伟大的想法,封装这个东西在布局!事实上,Date和DateTime共享所有内容,出于某种原因,从MVC3到MVC5导致装饰为'DataType.Date'的属性不再使用DateTime模板。有一些代码schenanigans来处理从'@ Html.LabelAndEditorFor()'和我正在应用的标准类的调用中请求的合并类,但这就是它。 – MushinNoShin
优秀的优雅解决方案。 –