Portanto, o título deve falar por si.
Para criar componentes reutilizáveis no ASP.NET MVC, temos 3 opções (podem ser outras que eu não mencionei):
Vista parcial:
@Html.Partial(Model.Foo, "SomePartial")
Modelo de editor personalizado:
@Html.EditorFor(model => model.Foo)
Modelo de exibição personalizado:
@Html.DisplayFor(model => model.Foo)
Em termos da visualização / HTML real, todas as três implementações são idênticas:
@model WebApplications.Models.FooObject
<!-- Bunch of HTML -->
Então, minha pergunta é - quando / como você decide qual dos três usar?
O que realmente estou procurando é uma lista de perguntas a serem feitas antes de criar uma, para as quais as respostas podem ser usadas para decidir qual modelo usar.
Aqui estão as 2 coisas que eu achei melhor com o EditorFor / DisplayFor:
Eles respeitam as hierarquias do modelo ao renderizar auxiliares de HTML (por exemplo, se você tiver um objeto "Bar" no modelo "Foo", os elementos HTML de "Bar" serão renderizados com "Foo.Bar.ElementName", enquanto um parcial terá " ElementName ").
Mais robusto, por exemplo, se você tivesse
List<T>
algo em seu ViewModel, poderia usar@Html.DisplayFor(model => model.CollectionOfFoo)
, e o MVC é inteligente o suficiente para ver que é uma coleção e exibir a única exibição de cada item (em oposição a um Parcial, o que exigiria explícito para ciclo).
Eu também ouvi o DisplayFor renderizar um modelo "somente leitura", mas eu não entendo isso - eu não poderia lançar um formulário lá?
Alguém pode me dizer outras razões? Existe uma lista / artigo em algum lugar comparando os três?