如何创建通用的MVC3编辑器模板?

bat*_*uip 6 templates asp.net-mvc-3

我在我的模型模板中广泛使用以下代码片段.

<div class="control-group">
    @Html.LabelFor(model => model.FirstName)
    <div class="controls">
        @Html.TextBoxFor(model => model.FirstName, new { @class = "span3" })
        @Html.ValidationMessageFor(model => model.FirstName)
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

是否可以将其一般性地封装在编辑器模板中,这样我就可以使用Html.EditorFor(...)而不需要使用自定义扩展?

Dar*_*rov 10

是否可以将其一般性地封装在编辑器模板中,这样我就可以使用Html.EditorFor(...)而不需要使用自定义扩展?

当然:

~/Views/Shared/EditorTemplates/Foo.cshtml:

<div class="control-group">
    @Html.Label("")
    <div class="controls">
        @Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, new { @class = "span3" })
        @Html.ValidationMessage("")
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

然后:

@Html.EditorFor(x => x.FirstName, "Foo")
Run Code Online (Sandbox Code Playgroud)

要么:

[UIHint("Foo")]
pubilc string FirstName { get; set; }
Run Code Online (Sandbox Code Playgroud)

然后:

@Html.EditorFor(x => x.FirstName)
Run Code Online (Sandbox Code Playgroud)