我有一个ASP MVC应用程序,需要多种不同的布局。在ASP.NET Web Apps中,我刚刚制作了单独的母版页。我如何在ASP MVC 3中执行此操作?
到目前为止,我为每个需要的布局创建了一个单独的Layout.cshtml文件。
我尝试在视图中设置布局,但它正在从ViewStart.cshtml中被吹走,它将其设置回网站的默认布局。
另外,我似乎无法使用Razor进行智能感知,所以如果我可以有条件地设置布局,那么我无法探索我在ViewStart中可以做的很多事情。
思想?
答案 0 :(得分:56)
您可以在控制器操作中动态设置布局:
public ActionResult Index()
{
var viewModel = ...
return View("Index", "_SomeSpecialLayout", viewModel);
}
答案 1 :(得分:16)
您可以通过在上面写@{ Layout = "~/.../Something.cshtml"; }
来手动设置视图的布局。
编辑:您可以将布局名称作为参数传递给控制器中的View()
方法。
答案 2 :(得分:2)
此方法是初学者在ASP.NET MVC应用程序中控制布局呈现的最简单方法。我们可以识别控制器并根据控制器渲染布局。为此,我们将代码写入Views文件夹根目录中的_ViewStart
文件中。以下是如何完成的示例。
@{
var controller = HttpContext.Current.Request.RequestContext.RouteData.Values["Controller"].ToString();
string cLayout = "~/Views/Shared/_Layout.cshtml";
if (controller == "Webmaster") {
cLayout = "~/Views/Shared/_WebmasterLayout.cshtml";
}
Layout = cLayout;
}
阅读完整文章我写了here - "如何在ASP.NET MVC中渲染不同的布局"。