Ainsi, le titre devrait parler de lui-même.
Pour créer des composants réutilisables dans ASP.NET MVC, nous avons 3 options (pourraient être d'autres que je n'ai pas mentionnées):
Vue partielle:
@Html.Partial(Model.Foo, "SomePartial")
Modèle d'éditeur personnalisé:
@Html.EditorFor(model => model.Foo)
Modèle d'affichage personnalisé:
@Html.DisplayFor(model => model.Foo)
En termes de View / HTML, les trois implémentations sont identiques:
@model WebApplications.Models.FooObject
<!-- Bunch of HTML -->
Donc, ma question est - quand / comment décidez-vous lequel des trois utiliser?
Ce que je recherche vraiment, c'est une liste de questions à vous poser avant d'en créer une, pour laquelle les réponses peuvent être utilisées pour décider du modèle à utiliser.
Voici les 2 choses que j'ai mieux trouvées avec EditorFor / DisplayFor:
Ils respectent les hiérarchies de modèles lors du rendu des assistants HTML (par exemple, si vous avez un objet "Bar" sur votre modèle "Foo", les éléments HTML de "Bar" seront rendus avec "Foo.Bar.ElementName", tandis qu'un partiel aura " ElementName ").
Plus robuste, par exemple, si vous aviez
List<T>
quelque chose dans votre ViewModel, vous pourriez l'utiliser@Html.DisplayFor(model => model.CollectionOfFoo)
, et MVC est assez intelligent pour voir qu'il s'agit d'une collection et afficher l'affichage unique pour chaque élément (par opposition à un partiel, qui nécessiterait une explicite pour boucle).
J'ai également entendu que DisplayFor rend un modèle "en lecture seule", mais je ne le comprends pas - ne pourrais-je pas y envoyer un formulaire?
Quelqu'un peut-il me dire d'autres raisons? Existe-t-il quelque part une liste / un article comparant les trois?