Итак, название должно говорить само за себя.
Для создания повторно используемых компонентов в 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 (например, если у вас есть объект "Bar" в вашей модели "Foo", элементы HTML для "Bar" будут отображаться с "Foo.Bar.ElementName", в то время как часть будет иметь "ElementName").
Более надежный, например, если у вас есть List<T>
чего-то в вашей ViewModel, вы можете использовать @Html.DisplayFor(model => model.CollectionOfFoo)
, и MVC достаточно умен, чтобы видеть его коллекцию и отображать единое отображение для каждого элемента ( в отличие от частичного, который потребовал бы явного цикла for).
Я также слышал, что DisplayFor отображает шаблон "только для чтения", но я не понимаю этого - разве я не могу добавить туда форму?
Может кто-нибудь сказать мне другие причины? Есть ли где-нибудь список / статья, сравнивающая три?