如何从控制器设置布局

Val*_*mas 22 razor asp.net-mvc-3

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

试过:

ViewData["Layout"] = "..."
return View("view", Model);
Run Code Online (Sandbox Code Playgroud)

我知道有些人听起来很奇怪......

Pra*_*war 37

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

return View ("NameOfView",masterName:"viewName");
Run Code Online (Sandbox Code Playgroud)


Mst*_*san 11

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

public ActionResult Index()
        {
            var myView = View();
            myView.MasterName = "~/Views/Shared/_Layout2.cshtml"; 
            return myView;
        }
Run Code Online (Sandbox Code Playgroud)


Rob*_*ett 6

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

@ {
    Layout = ViewData["Layout"];
}
Run Code Online (Sandbox Code Playgroud)

  • 非常适合我,Dotnet Core MVC 在视图上没有 MasterName 属性,所以我无法设置它。我调整了这段代码,使其更加健壮。布局 = (ViewData["布局"] 作为字符串) ?? “_布局”; (2认同)

And*_*rew 6

Daren Dimitrov对这个属性有一个非常好的答案:

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