Таким образом, название должно говорить само за себя.
Для создания повторно используемых компонентов в 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 достаточно умен, чтобы видеть его как коллекцию и отображать одно отображение для каждого элемента (в отличие от Partial, для которого требуется явное петля).
Я также слышал, что DisplayFor отображает шаблон «только для чтения», но я не понимаю этого - разве я не могу добавить туда форму?
Может кто-нибудь сказать мне другие причины? Есть ли где-нибудь список / статья, сравнивающая три?