最佳答案
所以,标题应该不言自明。
在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更好的2件事:
它们在呈现HTML helper时尊重模型层次结构(例如,如果你的“Foo”模型上有一个“Bar”对象,“Bar”的HTML元素将使用“Foo.Bar”来呈现。ElementName”,而一个部分将有“ElementName”)。
更健壮,例如,如果你在ViewModel中有某个东西的List<T>
,你可以使用@Html.DisplayFor(model => model.CollectionOfFoo)
, MVC足够聪明,可以看到它是一个集合,并为每个项目呈现单个显示(与Partial相反,这将需要显式的for循环)。
我也听说过DisplayFor呈现一个“只读”模板,但我不明白-我不能扔一个表单在那里吗?
有人能告诉我其他原因吗?有没有比较这三个的列表/文章?