ASP MVC 3在不同视图中使用不同的布局

Ada*_*dam 28 asp.net-mvc razor

我有一个ASP MVC应用程序,需要多种不同的布局.在ASP.NET Web Apps中,我刚刚制作了单独的母版页.我如何在ASP MVC 3中执行此操作?

到目前为止,我已经为我需要的每个布局创建了一个单独的Layout.cshtml文件.

我尝试在视图中设置布局,但它正在远离ViewStart.cshtml,它将其设置回站点的默认布局.

另外,我似乎无法使用Razor进行智能感知,所以如果我可以有条件地设置布局,那么我无法探索我在ViewStart中可以做的很多事情.

思考?

Dar*_*rov 56

您可以在控制器操作中动态设置布局:

public ActionResult Index()
{
    var viewModel = ...
    return View("Index", "_SomeSpecialLayout", viewModel);
}
Run Code Online (Sandbox Code Playgroud)


SLa*_*aks 17

您可以通过@{ Layout = "~/.../Something.cshtml"; }在顶部书写来手动设置视图的布局.

编辑:您可以将布局名称作为参数传递给View()控制器中的方法.

  • 道歉,我正在寻找一种动态的方式.我宁愿使用相同的视图并更改其布局,而不是为每个布局设置单独的视图. (3认同)