Nested @ Html.DisplayFor (model = baseClass, "BaseClass") für nicht wiedergegebene Basisklassenvorlage

8

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.

DisplayTemplate Dateistruktur:

%Vor%

Cheese.chtml :

%Vor%

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?

    
Petrus Theron 13.03.2011, 19:36
quelle

2 Antworten

8

Lösung gefunden

@Html.DisplayFor(...) kann nicht sein geschachtelt , so müssen Sie @Html.Partial in Ihrer abgeleiteten Vorlage wie folgt verwenden:

%Vor%

Oder, wenn Ihre Dateistruktur es erlaubt, ein knapper Pfad:

%Vor%     
Petrus Theron 13.03.2011, 19:44
quelle
1
___ tag123templates ___ Das Templates-Tag wird in mehreren Kontexten verwendet: generische Programmierung (insbesondere C ++) und Daten- / Dokumentgenerierung mithilfe von Template-Engines. ___ answer 14859400 ___

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.

    
___ qstnhdr ___ Nested @ Html.DisplayFor (model = baseClass, "BaseClass") für nicht wiedergegebene Basisklassenvorlage ___ answer5291876 ___

Lösung gefunden

%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%     
___ tag123nested ___ Dieses Tag bezieht sich auf verschiedene verschachtelte Entitäten oder Operationen in der Programmierung. ___ tag123razor ___ Razor ist eine Vorlagensprache, die von ASP.NET-Webseiten und ASP.NET MVC (seit Version 3) verwendet wird. Es fügt eine Abstraktionsebene oberhalb der HTML-Generierung hinzu. Es unterstützt nahtlose Übergänge zwischen HTML Markup und C # oder VB Code. Übergänge zwischen Markup und Code werden durch das "@" Zeichen angezeigt. ___ qstntxt ___

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.

DisplayTemplate Dateistruktur:

%Vor%

%code% :

%Vor%

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?

    
___ tag123aspnetmvc3 ___ ASP.NET MVC 3 ist die dritte Hauptversion der Model-View-Controller-Erweiterung für die Entwicklung von Webanwendungen in einem .NET-Framework. ___
Jacob Brewer 13.02.2013 17:29
quelle