2012-04-18 102 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)