Entonces, el título debería hablar por sí mismo.
Para crear componentes reutilizables en ASP.NET MVC, tenemos 3 opciones (podrían ser otras que no he mencionado):
Vista parcial:
@Html.Partial(Model.Foo, "SomePartial")
Plantilla de editor personalizada:
@Html.EditorFor(model => model.Foo)
Plantilla de visualización personalizada:
@Html.DisplayFor(model => model.Foo)
En términos de la Vista / HTML real, las tres implementaciones son idénticas:
@model WebApplications.Models.FooObject
<!-- Bunch of HTML -->
Entonces, mi pregunta es: ¿cuándo / cómo decides cuál de los tres usar?
Lo que realmente estoy buscando es una lista de preguntas que debe hacerse antes de crear una, para lo cual las respuestas se pueden usar para decidir qué plantilla usar.
Aquí están las 2 cosas que he encontrado mejor con EditorFor / DisplayFor:
Respetan las jerarquías de los modelos cuando se representan ayudantes HTML (por ejemplo, si tiene un objeto "Bar" en su modelo "Foo", los elementos HTML para "Bar" se representarán con "Foo.Bar.ElementName", mientras que un parcial tendrá " ElementName ").
Más robusto, por ejemplo, si tuviera
List<T>
algo de su ViewModel, podría usarlo@Html.DisplayFor(model => model.CollectionOfFoo)
, y MVC es lo suficientemente inteligente como para ver que es una colección y mostrar la única pantalla para cada elemento (en lugar de un Parcial, lo que requeriría un explícito para lazo).
También he oído que DisplayFor representa una plantilla de "solo lectura", pero no lo entiendo, ¿no podría arrojar un formulario allí?
¿Alguien puede decirme otras razones? ¿Hay una lista / artículo en algún lugar comparando los tres?