Mehrere Unterklassen (z. B. Käse ) haben gemeinsame Eigenschaften, die von einer Basisklasse ( Produkt ) mit Eigenschaften wie SKU , Name und Beschreibung .
Um Doppelungen beim Rendern von Anzeige- / Editor-Vorlagen zu vermeiden, möchte ich, dass jede Unterklassenvorlage ( Cheese.cshtml ) ihre eindeutigen Felder unterhalb der gemeinsamen gemeinsamen Basisklassenvorlage () rendert Product.cshtml ).
Das Umwandeln von der abgeleiteten Klasse in die Basisklasse (Product)cheese
und das Anzeigen der Vorlage in der Unterklassenvorlage hat jedoch keine Auswirkungen.
Cheese.chtml
: Das Umwandeln in die Basisklasse und das Rendern der Product.cshtml Vorlage funktionieren problemlos in einer Ansicht, aber nicht innerhalb der Unterklassenvorlage.
Wie kann ich eine allgemeine Vorlage für meine Basisklasse aus meinen Unterklassenvorlagen rendern?
@Html.DisplayFor(...)
kann nicht sein geschachtelt , so müssen Sie @Html.Partial
in Ihrer abgeleiteten Vorlage wie folgt verwenden:
Oder, wenn Ihre Dateistruktur es erlaubt, ein knapper Pfad:
%Vor%Es kann strittig sein, ob es eine gute Idee ist, komplizierte Objekte zu erstellen, oder ob meine Annäherung an verschachtelte Vorlagen ein Hack ist oder nicht. Der Vorteil besteht darin, dass eine einzige Vorlage für das übergeordnete Element und das untergeordnete Element beide Vorlagen haben können, anstatt Teilansichten auswählen / verwenden zu müssen.
Abgesehen davon können Vorlagenansichten verschachtelt werden, wenn Sie eine Teilansicht als Übergang verwenden.
Die äußere Vorlage hat etwas wie unten, wo Sie die innere Vorlage platzieren möchten:
%Vor%Der geteilte Teil würde so aussehen:
%Vor%Die innere Vorlage würde dann aufgerufen werden und würde wie jede andere aussehen.
So würde Ihr Beispiel aussehen wie
Cheese.cshtml:
%Vor%SharedPartialProductGobetween.cshtml:
%Vor%Ihre Produktvorlage würde sich nicht ändern.
%code% kann nicht sein geschachtelt , so müssen Sie %code% in Ihrer abgeleiteten Vorlage wie folgt verwenden:
%Vor%Oder, wenn Ihre Dateistruktur es erlaubt, ein knapper Pfad:
%Vor%Mehrere Unterklassen (z. B. Käse ) haben gemeinsame Eigenschaften, die von einer Basisklasse ( Produkt ) mit Eigenschaften wie SKU , Name und Beschreibung .
Um Doppelungen beim Rendern von Anzeige- / Editor-Vorlagen zu vermeiden, möchte ich, dass jede Unterklassenvorlage ( Cheese.cshtml ) ihre eindeutigen Felder unterhalb der gemeinsamen gemeinsamen Basisklassenvorlage () rendert Product.cshtml ).
Das Umwandeln von der abgeleiteten Klasse in die Basisklasse %code% und das Anzeigen der Vorlage in der Unterklassenvorlage hat jedoch keine Auswirkungen.
Das Umwandeln in die Basisklasse und das Rendern der Product.cshtml Vorlage funktionieren problemlos in einer Ansicht, aber nicht innerhalb der Unterklassenvorlage.
Wie kann ich eine allgemeine Vorlage für meine Basisklasse aus meinen Unterklassenvorlagen rendern?
Tags und Links asp.net-mvc-3 razor nested templates