因此,标题应能说明一切。
要在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”)。
更加健壮,例如,如果
List<T>
ViewModel中包含a 之类的东西,则可以使用@Html.DisplayFor(model => model.CollectionOfFoo)
,并且MVC足够聪明,可以看到它是一个集合,并为每个项目呈现单个显示(与Partial相反,这需要显式环)。
我还听说DisplayFor呈现了一个“只读”模板,但是我不明白-我不能在上面扔表格吗?
有人可以告诉我其他原因吗?是否有清单/文章比较这三个地方?