Quindi, il titolo dovrebbe parlare da solo.
Per creare componenti riutilizzabili in ASP.NET MVC, abbiamo 3 opzioni (potrebbero essere altri che non ho menzionato):
Vista parziale:
@Html.Partial(Model.Foo, "SomePartial")
Modello di editor personalizzato:
@Html.EditorFor(model => model.Foo)
Modello di visualizzazione personalizzato:
@Html.DisplayFor(model => model.Foo)
In termini di visualizzazione / HTML effettivi, tutte e tre le implementazioni sono identiche:
@model WebApplications.Models.FooObject
<!-- Bunch of HTML -->
Quindi, la mia domanda è: quando / come decidi quale dei tre usare?
Quello che sto davvero cercando è un elenco di domande da porsi prima di crearne uno, per il quale è possibile utilizzare le risposte per decidere quale modello utilizzare.
Ecco le 2 cose che ho trovato meglio con EditorFor / DisplayFor:
Rispettano le gerarchie dei modelli durante il rendering degli helper HTML (ad es. Se sul modello "Foo" è presente un oggetto "Bar", gli elementi HTML per "Bar" verranno visualizzati con "Foo.Bar.ElementName", mentre un parziale avrà " ElementName ").
Più robusto, ad esempio se
List<T>
nel ViewModel avevi qualcosa di simile, puoi usarlo@Html.DisplayFor(model => model.CollectionOfFoo)
e MVC è abbastanza intelligente da vedere che è una raccolta e renderizzare il singolo display per ogni elemento (al contrario di un parziale, che richiederebbe un esplicito per ciclo continuo).
Ho anche sentito che DisplayFor esegue il rendering di un modello di "sola lettura", ma non lo capisco: non posso lanciare un modulo lì?
Qualcuno può dirmi alcune altre ragioni? C'è un elenco / articolo da qualche parte che confronta i tre?