25

有没有办法从控制器设置布局?

试过:

ViewData["Layout"] = "..."
return View("view", Model);

我知道这对某些人来说听起来很奇怪......

4

6 回答 6

38

View 方法有重载来设置它的主布局像这样

return View ("NameOfView",masterName:"viewName");
于 2012-04-18T07:52:24.100 回答
12

在操作方法中,您可以使用 ViewResult类中的MasterName属性来更改布局页面。

public ActionResult Index()
        {
            var myView = View();
            myView.MasterName = "~/Views/Shared/_Layout2.cshtml"; 
            return myView;
        }
于 2015-07-29T23:50:35.273 回答
7

使用您的代码,您可以将其放在您的视图中:

@ {
    Layout = ViewData["Layout"];
}
于 2012-04-18T07:48:33.493 回答
6

达伦·迪米特洛夫(Daren Dimitrov)对此有一个非常好的答案:

如何在 ASP.NET MVC 3 razor ViewStart 文件中指定不同的布局?

于 2012-04-18T08:01:56.283 回答
4

在控制器中,您可以像这样设置母版页。我正在使用 MVC 5.2

return View("ViewName", "MasterPageName", model)
于 2016-07-13T14:07:05.917 回答
-2

如果您的 Views 目录中有一个 _ViewStart.cshtml 文件,您可以自动为同一文件夹(和子文件夹)中的所有视图设置布局:

@{
    Layout = "~/Views/Shared/Layout.cshtml";
}
于 2012-04-20T13:02:29.210 回答