EditorTemplates - 在Date.cshtml和DateTime.cshtml之间共享实现

时间:2013-11-02 18:52:34

标签: c# asp.net-mvc razor asp.net-mvc-5 mvc-editor-templates

我有DateTime和Date的编辑器模板。 Date的内容是DateTime的简单复制和粘贴。这是一个糟糕的复制和粘贴编码。

使用[DataType(DataType.Date)]修饰的属性是否有一种好方法可以使用DateTime编辑器模板?如何从Date模板直接使用DateTime模板和一些添加的ViewData信息?

1 个答案:

答案 0 :(得分:3)

编辑器模板中有多少代码?

我通常所做的是为包含我的模板的大多数常见HTML的所有编辑器模板提供共享布局,然后您(通常)只留下一行代码用于实际类型特定的HTML。

例如,这是布局编辑器模板的简化版本:

<强> _Layout.cshtml

<p>
    @Html.LabelFor(m => m):
</p>
<p>
    @RenderSection("value")
</p>
<p>
    @Html.ValidationMessageFor(m => m)
</p>

然后是一些特定于类型的模板:

<强> String.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)
}
相关问题