具有嵌套布局的_ViewStart.cshtml

时间:2012-04-26 08:47:17

标签: asp.net-mvc razor

我有以下项目结构:

Project structure

_ViewStart.cshtml:

@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}

_Red.cshtml:

@{
    ViewBag.Title = "Red";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

_Blue.cshtml 是否明确指定了布局。

现在,如果尝试使用_Red.cshtml布局呈现Index.cshtml,则_Layout.cshtml也会按层次结构应用。所以基本上我们有一个嵌套的模板链_Layout-> Red->我们的页面

但是如果我尝试使用_Blue.cshtml渲染Index.cshtml,则_Layout.cshtml 应用。 我希望按照惯例使用_viewstart将_Layout.cshtml应用于_Blue.cshtml。相反,我得到的Index.cshtml页面只应用了_Blue.cshtml模板。

我的假设错了吗?

提前致谢!

更新

控制器方法:

public ActionResult Index()
{
    ViewBag.Message = "Welcome to ASP.NET MVC!";

    return View("Index");
}

所以,我正在返回ViewResult,而不是PartialViewResult;)

1 个答案:

答案 0 :(得分:3)

是的,你的假设是错误的。如果指定了布局(_Blue.cshtml),则不会应用_Viewstart中的布局。 _Viewstart用于默认布局,因此您无需在每个页面上指定它。