Gibt es eine Möglichkeit, das Layout vom Controller aus einzustellen?So legen Sie das Layout vom Controller fest
versucht:
ViewData["Layout"] = "..."
return View("view", Model);
Ich weiß, es mit einigen Leuten seltsam klingen ....
Gibt es eine Möglichkeit, das Layout vom Controller aus einzustellen?So legen Sie das Layout vom Controller fest
versucht:
ViewData["Layout"] = "..."
return View("view", Model);
Ich weiß, es mit einigen Leuten seltsam klingen ....
Die View-Methode hat eine Überladung, um das Master-Layout so einzurichten:
return View ("NameOfView",masterName:"viewName");
Code verwenden, können Sie diese in Ihrer Ansicht setzen:
@ {
Layout = ViewData["Layout"];
}
Daren Dimitrov hat eine sehr schöne Antwort auf diese mit Attributen:
How do I specify different Layouts in the ASP.NET MVC 3 razor ViewStart file?
danke für das zeigen! –
Wenn Sie eine _ViewStart.cshtml Datei in Ihrem Ansichten Verzeichnis haben, erhalten Sie automatisch das Layout für alle Ansichten im gleichen Ordner festlegen (und Unterordner):
@{
Layout = "~/Views/Shared/Layout.cshtml";
}
Die Frage war, wie man es vom Controller aus setzt. –
Fair genug, die Frage falsch gelesen :). In diesem Fall könnten Sie Robs Vorschlag oben verwenden. –
in Aktion-Methode können Sie Mastername Eigenschaft in Viewresult Klasse verwenden, um Layout-Seite zu ändern.
public ActionResult Index()
{
var myView = View();
myView.MasterName = "~/Views/Shared/_Layout2.cshtml";
return myView;
}
Immer gut, verschiedene Geschmacksrichtungen zu sehen. –
In der Steuerung können Sie eine Masterpage wie folgt einstellen. Ich verwende MVC 5,2
return View("ViewName", "MasterPageName", model)
die Frage speziell über den Controller fragt ... – Nathan
Er hat schon das Viewdata [ „Layout“] in seinem Code festgelegt, das ist, was er zu der Ansicht hinzuzufügen, muss es zu machen arbeite, aber ich sehe was du sagst. –
Funktioniert perfekt für mich, Dotnet Core MVC hat nicht die Eigenschaft von MasterName auf der Ansicht, so konnte ich das nicht einstellen. Ich habe diesen Code optimiert, um etwas robuster zu sein. Layout = (ViewData ["Layout"] als String) ?? "_Layout"; – Matt