Ich befinde mich in der (nicht ganz ungewöhnlichen) Situation, ein containing div in meinem geteilten Layout zu haben:
%Vor%Normalerweise ist dies eine feste Breite, aber auf bestimmten Seiten möchte ich die Klasse "fullwidth" zu diesem Container hinzufügen, die es erlaubt, die gesamte Seitenbreite zu füllen. In diesem speziellen Fall liegt das daran, dass die Ansicht eine Javascript-Anwendung hostet, für die ein großer Arbeitsbereich erforderlich ist.
Ich könnte dies mit jQuery machen, aber ich möchte nicht, dass es nach dem Rendern der Seite passiert, im Idealfall könnte Razor diese Klasse an den Container anhängen.
Gibt es eine Möglichkeit für mich, den Inhalt eines freigegebenen Layouts in einer Ansicht zu beeinflussen? renderSection fühlt sich ziemlich genau an, was ich brauche, aber es wäre ziemlich verrückt, einen Abschnitt innerhalb eines Klassenattributs zu definieren, nur um einen Klassennamen an ihn anzuhängen. Ähnliches zu kopieren wäre das Overkill ...
Gibt es eine Möglichkeit, dies zu tun?
Danke
Art von Hack-Ish, aber ich habe es in der Vergangenheit verwendet:
_Layout.cshtml
%Vor%SomeView.cshtml
%Vor% Eine andere Alternative ist, ein _Layout.cshtml
und _LayoutFull.cshtml
zu haben und hinzuzufügen:
Dies kann entweder direkt in der Ansicht sein oder in der _ViewStart.cshtml
-Datei dieses Controllers (aber ich möchte nie, dass zwei HTML-Seiten für solch eine einfache Änderung gepflegt werden müssen).
Normalerweise füge ich den Namen des Controllers als eine Klasse hinzu, um mir zu helfen, zwischen den Seiten zu unterscheiden.
%Vor%Ich habe diesen Ansatz in einer ähnlichen Situation verwendet:
In _Layout.cshtml:
%Vor%In allen Ansichten, die die CSS-Klasse des Körpers überschreiben müssen:
%Vor%Das scheint für so eine einfache Sache Overkill zu sein, aber es vermeidet den ViewBag, was in meinem Buch eine gute Sache ist.
Tags und Links asp.net-mvc razor