因此,标题应该说明问题。
在ASP.NET MVC中创建可重用组件有三个选项(可能还有其他未提及的选项):
局部视图:
@Html.Partial(Model.Foo, "SomePartial")
自定义编辑器模板:
@Html.EditorFor(model => model.Foo)
自定义显示模板:
@Html.DisplayFor(model => model.Foo)
就实际的视图/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足够智能,以便看到它是一个集合,并为每个项目渲染单个显示(而不是一个部分视图,它需要显式循环)。
我还听说DisplayFor呈现“只读”模板,但我不理解 - 我不能在那里放置一个表单吗?
有人可以告诉我其他原因吗?是否有比较这三者的列表或文章?