2012-04-18 149 views

回答

36

查看方法有過載設置它的主佈局是這樣的

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

使用你的代碼,你可以把這個在您的視圖:

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

問題專門詢問控制器... – Nathan 2016-07-21 03:26:44

+1

他已經設置計算機[「佈局」]在他的代碼,這是他需要添加到視圖,使其什麼工作,但我明白你在說什麼。 – 2016-07-21 08:14:46

+0

對我來說非常合適,Dotnet Core MVC在視圖上沒有MasterName的屬性,所以我無法設置它。我調整了這個代碼,使其稍微更健壯。 Layout =(ViewData [「Layout」] as String)?? 「_佈局」; – Matt 2017-03-17 14:18:42

-2

如果你在你的瀏覽目錄中的文件_ViewStart.cshtml,可以自動在同一文件夾中的所有視圖設置佈局(和子文件夾):

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

問題是關於如何從控制器設置它。 – 2012-04-22 22:13:33

+1

不夠公平,誤解了這個問題:)。在這種情況下,你可以使用Rob的建議。 – 2012-04-23 07:51:02

8

在操作方法可以使用MasterName財產的ViewResult類來更改頁面佈局。

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

總是很高興看到不同的口味。 – 2015-07-30 00:59:13

2

在控制器,你可以設置這樣的母版。我使用MVC 5.2

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