Ich möchte 2 separate Layouts in meiner Anwendung haben. Angenommen, einer ist für den öffentlichen Bereich der Website und der andere für die Mitgliederseite.
Nehmen wir zur Vereinfachung an, die gesamte Logik für jede dieser Sites ist ordentlich in zwei verschiedene Controller verpackt.
- PublicController
- StaffController
Und dass sie jeweils ein entsprechendes Layout für die gesamte Ansicht haben.
- _PublicLayout.cshtml
- _StaffLayout.cshtml
Wie verwende ich die Datei _ViewStart.cshtml, um anzugeben, dass alle Ansichten / Aktionen unter "Öffentlich" das PublicLayout und alle unter "Mitarbeiter" das StaffLayout verwenden?
Vielen Dank!
asp.net-mvc
layout
asp.net-mvc-3
razor
Justin
quelle
quelle
Razor
Ansicht entfernen möchten , setzen Sie einfachLayout = null;
Antworten:
Sie können eine
_ViewStart.cshtml
Datei in den/Views/Public
Ordner einfügen, die die Standarddatei im/Views
Ordner überschreibt und das gewünschte Layout angibt:Analog könnten Sie eine andere
_ViewStart.cshtml
Datei in den/Views/Staff
Ordner legen mit:Sie können auch angeben, welches Layout verwendet werden soll, wenn eine Ansicht innerhalb einer Controller-Aktion zurückgegeben wird. Dies gilt jedoch pro Aktion:
Eine weitere Möglichkeit ist ein benutzerdefinierter Aktionsfilter, der das Layout überschreibt. Wie Sie sehen, gibt es viele Möglichkeiten, dies zu erreichen. Sie können selbst entscheiden, welches am besten zu Ihrem Szenario passt.
AKTUALISIEREN:
Wie im Kommentarbereich angefordert, ist hier ein Beispiel für einen Aktionsfilter, der eine Masterseite auswählen würde:
und dekorieren Sie dann einen Controller oder eine Aktion mit diesem benutzerdefinierten Attribut, das das gewünschte Layout angibt:
quelle
LayoutInjecterAttribute
. ? Gibt es einen bestimmten Ort?ActionFilters
Unterordner legen .LayoutInjecterAttribute
: Es wird vor derOnException
Methode des Controllers aufgerufen . Wenn der Controller während der Ausnahmebehandlung ein Ansichtsergebnis liefert, wird das Layout nicht festgelegt.OnActionExecuted
. Können Sie bitte die Antwort für mich aktualisieren?Eine weitere Methode besteht darin, das Layout in der Ansicht zu definieren:
Weitere Möglichkeiten finden Sie hier . Ich hoffe, dies hilft jemandem.
quelle
Diese Methode ist für Anfänger die einfachste Möglichkeit, das Rendern von Layouts in Ihrer ASP.NET MVC-Anwendung zu steuern. Wir können den Controller identifizieren und die Layouts als Par-Controller rendern. Dazu können wir unseren Code in die _ViewStart-Datei im Stammverzeichnis des Views-Ordners schreiben. Das folgende Beispiel zeigt, wie es gemacht werden kann.
Lesen Sie den vollständigen Artikel hier "So rendern Sie unterschiedliche Layouts in ASP.NET MVC"
quelle