【问题标题】:ASP.NET MVC 3: Editor templates for fieldsASP.NET MVC 3:字段的编辑器模板
【发布时间】:2012-01-06 11:47:00
【问题描述】:
<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 对应物正确地放入表格中?无需我用表格标记污染我的所有观点。

【问题讨论】:

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


    【解决方案1】:

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

    给定一个基本模型:

    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>
    

    并根据需要呈现您的输出,而无需在视图中添加额外的表格标记。

    【讨论】:

    • 如果它不完全基于模型怎么办?而是模型领域和新领域的混合体。所以,基本上你得把DropDownList、TextBox、TextArea、DropDownListFor一起调用,放到一张表中。
    • @Doomsknight 也可以。例如,如果您正在渲染视图模型,则编辑器模板可以基于该模型。 html 帮助器是为了更容易地根据需要呈现您的视图。要使用的组合完全取决于您要渲染的内容。
    【解决方案2】:

    【讨论】:

    • 谢谢,我已经看过了,据我了解,这只适用于Html.DisplayForModel()Html.EditorForModel()。 (我使用这些模板)
    • 也适用于Html.DisplayForHtml.EditorFor
    猜你喜欢
    • 2011-05-14
    • 1970-01-01
    • 2011-06-29
    • 2011-08-14
    • 2012-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    相关资源
    最近更新 更多