所以,标题应该说明一切.
要在ASP.NET MVC中创建可重用的组件,我们有3个选项(可能是其他我没有提到的):
局部视图:
@Html.Partial(Model.Foo, "SomePartial")
Run Code Online (Sandbox Code Playgroud)
自定义编辑模板:
@Html.EditorFor(model => model.Foo)
Run Code Online (Sandbox Code Playgroud)
自定义显示模板:
@Html.DisplayFor(model => model.Foo)
Run Code Online (Sandbox Code Playgroud)
就实际的View/HTML而言,所有三种实现都是相同的:
@model WebApplications.Models.FooObject
<!-- Bunch of HTML -->
Run Code Online (Sandbox Code Playgroud)
所以,我的问题是 - 你何时/如何决定使用三者中的哪一个?
我真正想要的是在创建问题之前要问自己的问题列表,其答案可用于决定使用哪个模板.
以下是我使用EditorFor/DisplayFor找到的2件更好的东西:
它们在呈现HTML帮助程序时尊重模型层次结构(例如,如果在"Foo"模型上有"Bar"对象,则"Bar"的HTML元素将使用"Foo.Bar.ElementName"呈现,而部分将具有"的ElementName").
更强大,例如,如果你List<T>在ViewModel中有一些东西,你可以使用@Html.DisplayFor(model => model.CollectionOfFoo),而MVC足够聪明,可以看到它是一个集合,并为每个项目渲染单个显示(而不是Partial,这需要一个明确的环).
我也听说DisplayFor呈现了一个"只读"模板,但我不明白 - 我不能在那里扔一个表格吗?
有人能告诉我一些其他原因吗?是否有一个列表/文章比较这三个?
asp.net-mvc asp.net-mvc-partialview editortemplates razor asp.net-mvc-3