2012-04-18 13 views

Antwort

36

Die View-Methode hat eine Überladung, um das Master-Layout so einzurichten:

return View ("NameOfView",masterName:"viewName"); 
6

Code verwenden, können Sie diese in Ihrer Ansicht setzen:

@ { 
    Layout = ViewData["Layout"]; 
} 
+0

die Frage speziell über den Controller fragt ... – Nathan

+1

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

+0

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

-2

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"; 
} 
+2

Die Frage war, wie man es vom Controller aus setzt. –

+1

Fair genug, die Frage falsch gelesen :). In diesem Fall könnten Sie Robs Vorschlag oben verwenden. –

8

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; 
     } 
+0

Immer gut, verschiedene Geschmacksrichtungen zu sehen. –

2

In der Steuerung können Sie eine Masterpage wie folgt einstellen. Ich verwende MVC 5,2

return View("ViewName", "MasterPageName", model) 
Verwandte Themen