7

只是想知道人们如何以及何时使用编辑器/显示模板与 Html 助手。具体来说,我正在谈论它在呈现不同的 UI 控件而不是呈现实体中的用途。

例如,我有类似以下的自动取款机:

<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 属性。

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

干杯安东尼

4

3 回答 3

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

于 2010-02-05T02:50:01.580 回答
0

我非常喜欢第二个。

它很优雅,可以让你摆脱那些令人讨厌的字符串:)

于 2010-02-05T03:39:30.177 回答
0

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

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

于 2010-02-10T21:53:29.583 回答