MVC-Razor - fügen Sie eine Klasse zum übergeordneten Div-Element des freigegebenen Layouts aus einer untergeordneten Ansicht hinzu

9

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

    
managedheap84 27.09.2013, 15:37
quelle

4 Antworten

8

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:

%Vor%

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).

    
Brad Christie 27.09.2013, 15:42
quelle
1

Normalerweise füge ich den Namen des Controllers als eine Klasse hinzu, um mir zu helfen, zwischen den Seiten zu unterscheiden.

%Vor%     
Colin Bacon 27.09.2013 15:49
quelle
0

Um Colins Antwort zu erweitern, benutze ich einen Helfer:

%Vor%

Mit der folgenden Erweiterungsmethode

%Vor%     
Tom 07.10.2014 12:39
quelle
0

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.

    
Nugsson 11.11.2016 10:46
quelle

Tags und Links