Der Titel sollte also für sich selbst sprechen.
Um wiederverwendbare Komponenten in ASP.NET MVC zu erstellen, haben wir drei Optionen (möglicherweise andere, die ich nicht erwähnt habe):
Teilansicht:
@Html.Partial(Model.Foo, "SomePartial")
Benutzerdefinierte Editor-Vorlage:
@Html.EditorFor(model => model.Foo)
Benutzerdefinierte Anzeigevorlage:
@Html.DisplayFor(model => model.Foo)
In Bezug auf die tatsächliche Ansicht / HTML sind alle drei Implementierungen identisch:
@model WebApplications.Models.FooObject
<!-- Bunch of HTML -->
Meine Frage ist also: Wann / wie entscheiden Sie, welche der drei Sie verwenden möchten?
Was ich wirklich suche, ist eine Liste von Fragen, die Sie sich stellen müssen, bevor Sie eine erstellen, anhand derer anhand der Antworten entschieden werden kann, welche Vorlage verwendet werden soll.
Hier sind die 2 Dinge, die ich mit EditorFor / DisplayFor besser gefunden habe:
Sie berücksichtigen Modellhierarchien beim Rendern von HTML-Helfern (z. B. wenn Sie ein "Bar" -Objekt in Ihrem "Foo" -Modell haben, werden die HTML-Elemente für "Bar" mit "Foo.Bar.ElementName" gerendert, während ein Teil " Elementname ").
Robuster, z. B. wenn Sie
List<T>
etwas in Ihrem ViewModel haben, das Sie verwenden könnten@Html.DisplayFor(model => model.CollectionOfFoo)
, und MVC ist intelligent genug, um zu sehen, dass es sich um eine Sammlung handelt, und die einzelne Anzeige für jedes Element zu rendern (im Gegensatz zu einem Teil, für das ein explizites Element erforderlich wäre Schleife).
Ich habe auch gehört, dass DisplayFor eine "schreibgeschützte" Vorlage rendert, aber ich verstehe das nicht - könnte ich dort kein Formular werfen?
Kann mir jemand andere Gründe nennen? Gibt es irgendwo eine Liste / einen Artikel, in dem die drei verglichen werden?