2012-04-18 7 views

risposta

36

Il metodo View ha un sovraccarico per impostare il layout principale in modo simile a questo

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

Utilizzando il codice, si potrebbe mettere questo nel vostro Vista:

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

la questione chiede specificamente il controller ... – Nathan

+1

Ha già impostato il Viewdata [ "Layout"] nel suo codice, questo è quello che ha bisogno di aggiungere al fine di renderlo lavoro ma vedo quello che stai dicendo. –

+0

Funziona perfettamente per me, Dotnet Core MVC non ha la proprietà di MasterName sulla vista quindi non ho potuto impostarlo. Ho ottimizzato questo codice per essere leggermente più robusto. Layout = (ViewData ["Layout"] come stringa) ?? "_Disposizione"; – Matt

-2

Se si dispone di un file nella directory _ViewStart.cshtml Visualizzazioni, è possibile impostare automaticamente il layout per tutte le viste all'interno della stessa cartella (e sottocartelle):

@{ 
    Layout = "~/Views/Shared/Layout.cshtml"; 
} 
+2

La domanda era su come impostarlo dal controller. –

+1

Abbastanza corretto, ho letto male la domanda :). In tal caso, potresti utilizzare il suggerimento di Rob sopra. –

8

metodo d'azione è possibile utilizzare MasterName proprietà in ViewResult classe per cambiare layout di pagina.

public ActionResult Index() 
     { 
      var myView = View(); 
      myView.MasterName = "~/Views/Shared/_Layout2.cshtml"; 
      return myView; 
     } 
+0

Sempre bello vedere sapori diversi. –

2

Nel controller è possibile impostare una pagina master come questa. Sto usando MVC 5,2

return View("ViewName", "MasterPageName", model) 
Problemi correlati