【发布时间】:2011-06-29 14:01:06
【问题描述】:
所以,标题应该说明一切。
要在 ASP.NET MVC 中创建可重用组件,我们有 3 个选项(可能是我没有提到的其他选项):
局部视图:
@Html.Partial(Model.Foo, "SomePartial")
自定义编辑器模板:
@Html.EditorFor(model => model.Foo)
自定义显示模板:
@Html.DisplayFor(model => model.Foo)
就实际的 View/HTML 而言,所有三个实现都是相同的:
@model WebApplications.Models.FooObject
<!-- Bunch of HTML -->
那么,我的问题是 - 您何时/如何决定使用这三个中的哪一个?
我真正想要的是在创建之前要问自己的问题列表,这些问题的答案可用于决定使用哪个模板。
这是我发现使用 EditorFor/DisplayFor 更好的两件事:
他们在渲染 HTML 助手时尊重模型层次结构(例如,如果您的“Foo”模型上有一个“Bar”对象,“Bar”的 HTML 元素将使用“Foo.Bar.ElementName”渲染,而部分将具有“ElementName”)。
更健壮,例如,如果您的 ViewModel 中有
List<T>的某些东西,您可以使用@Html.DisplayFor(model => model.CollectionOfFoo),并且 MVC 足够聪明,可以看到它是一个集合并为每个项目呈现单个显示 (而 Partial 则需要显式的 for 循环)。
我还听说 DisplayFor 渲染了一个“只读”模板,但我不明白 - 我不能在上面扔一个表单吗?
谁能告诉我一些其他的原因?有没有比较这三者的列表/文章?
【问题讨论】:
-
编辑器和显示模板背后的概念在 asp.net mvc 2 的文档中明确定义。模板是遵守特定约定的部分。使模板比旧的部分更好或更差的情况几乎完全取决于该约定是否值得在您的应用程序中遵守。
标签: asp.net-mvc asp.net-mvc-3 razor asp.net-mvc-partialview editortemplates