ASP.NET MVC 3:字段的编辑器模板

时间:2011-11-25 16:20:47

标签: c# asp.net asp.net-mvc-3 html-table

<tr>
   <td>
        @Html.Label("Notes") </td><td> @Html.TextArea("Notes")
   </td></tr>
   <tr><td>
        @Html.Label("Action Date")</td><td> @Html.TextBoxFor(m => m.Due, new { @class = "dateTimePicker" })</td><td>
        @Html.ValidationMessageFor(m => m.Due)
   </td></tr>

无论如何,我可以创建一个模板,该模板可以使用任何@HTML.Label@Html.Textbox等等,以及他们的for对应物,并将它们正确放入表中?没有我用表格标记来判断我的所有观点。

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:2)

你当然可以。我根据您的示例代码拼凑了一个快速示例:

给出一个基本模型:

public class Foo
{
    public string Notes { get; set; }

    [Required]
    [DisplayName("Action Date")]
    public DateTime Due { get; set; }
}

这个简单的控制器:

var model = new Foo { Notes = "Some Note String", Due = System.DateTime.Now };
return View(model);

您可以从视图中调用编辑器模板:

 @Html.Editor("Editor", "Foo", Model)

鉴于此模板:

@model StackExamples.Models.Foo

<table>
    <tr>
        <td>
            @Html.LabelFor(x => x.Notes)
        </td>
        <td>
            @Html.TextAreaFor(x=>x.Notes)
        </td>
    </tr>
    <tr>
        <td>
            @Html.LabelFor(x=>x.Due)
        </td>
        <td>
            @Html.TextBoxFor(m => m.Due, new { @class = "dateTimePicker" })
        </td>
        <td>
            @Html.ValidationMessageFor(m => m.Due)
        </td>
    </tr>
</table>

根据需要渲染输出,而不在视图中添加额外的表格标记。