Итак, название должно говорить само за себя.
Чтобы создать повторно используемые компоненты в ASP.NET MVC, у нас есть 3 варианта (могут быть другие, о которых я не упоминал):
Частичный вид:
@Html.Partial(Model.Foo, "SomePartial")
Шаблон пользовательского редактора:
@Html.EditorFor(model => model.Foo)
Пользовательский шаблон отображения:
@Html.DisplayFor(model => model.Foo)
В терминах фактического представления /HTML все три реализации идентичны:
@model WebApplications.Models.FooObject
<!-- Bunch of HTML -->
Итак, мой вопрос: когда/как вы решаете, какой из трех использовать?
То, что я действительно ищу, - это список вопросов, которые нужно задать себе, прежде чем создавать их, для которых ответы могут быть использованы для определения того, какой шаблон использовать.
Вот две вещи, которые я нашел лучше с помощью редактора ForFor/DisplayFor:
-
Они уважают иерархии моделей при рендеринге HTML-помощников (например, если у вас есть объект "Bar" на вашей модели "Foo", элементы HTML для "Bar" будут отображаться с помощью "Foo.Bar.ElementName", в то время как частичное будет иметь "ElementName" ).
-
Более надежный, например, если у вас есть
List<T>
чего-то в вашей ViewModel, вы можете использовать@Html.DisplayFor(model => model.CollectionOfFoo)
, а MVC достаточно умен, чтобы увидеть его в коллекции и отобразить одиночный дисплей для каждого элемента ( в отличие от Partial, для которого требуется явный цикл цикла).
Я также слышал, что DisplayFor отображает шаблон "только для чтения", но я этого не понимаю - не мог ли я нарисовать форму там?
Может ли кто-нибудь сказать мне другие причины? Есть ли список/статья где-то, сравнивая три?