人们如何使用编辑器/显示模板与Html助手?

时间:2010-02-04 22:26:28

标签: asp.net-mvc mvc-editor-templates

只是想知道人们如何以及何时使用编辑器/显示模板与Html助手。具体来说,我所说的是它用于渲染不同的UI控件而不是渲染实体。

例如,我有类似下面的atm:

<tr>
    <th><%= Html.LabelFor(x => x.ActivityTypeId) %></th>
    <td><%= Html.EditorFor(x => x.ActivityTypeList, "MultiSelectDropDownList")%></td>
</tr>
<tr>
    <th><%= Html.LabelFor(x => x.Name) %></th>
    <td><%= Html.EditorFor(x => x.Name) %></td>
</tr>
<tr>
    <th><%= Html.LabelFor(x => x.Description) %></th>
    <td><%= Html.DisplayFor(x => x.Description, "DisplayString")%></td>
</tr>   

但是最近我想知道我是否应该这样做:

<tr>
    <th><%= Html.LabelFor(x => x.ActivityTypeId) %></th>
    <td><%= Html.MultiSelectDropDownList(x => x.ActivityTypeList)%></td>
</tr>
<tr>
    <th><%= Html.LabelFor(x => x.Name) %></th>
    <td><%= Html.EditorFor(x => x.Name) %></td>
</tr>
<tr>
    <th><%= Html.LabelFor(x => x.Description) %></th>
    <td><%= Html.DisplayString(x => x.Description)%></td>
</tr>   

但是,如果我使用第二个选项是使用中间编辑器的重点...我将使用Html.Textbox,并且能够设置我喜欢的任何html属性。

我对人们在这里使用的模式感兴趣......有什么想法吗?

干杯 安东尼

3 个答案:

答案 0 :(得分:5)

EditorFor和DisplayFor是MVC 2最强大的方面,我认为应该尽可能多地使用和滥用。

跳转到Brad Wilsons博客并查看如何扩展对象模板以快速从带有属性的ViewModel中删除基于约定的屏幕: http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-5-master-page-templates.html

我在当前项目中使用这种技术,到目前为止还没有为单个屏幕编写过一行HTML。 :d

答案 1 :(得分:0)

我非常喜欢第二个。

它很优雅,让你摆脱那些笨拙的字符串:)

答案 2 :(得分:0)

我已修改(实际上,在修改过程中)T4 EditCreateView模板以吐出我想要的代码。该代码不使用任何DisplayForEditorFor方法。我没有深入研究这些方法的代码,但我相当肯定你会看到那里有一些反思。我修改过的模板目前会生成TextBoxForDropDownListForCheckBoxFor

如果您愿意,可以使用javar提到的Brad Wilson帖子中的方法。至少我会让模板使用DisplayForEditorFor为每个字段吐出代码,以便稍后返回可以更改为特定编辑器,并为输入字段添加任何必要的属性。