我有以下项目结构:
_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;)
答案 0 :(得分:3)
是的,你的假设是错误的。如果指定了布局(_Blue.cshtml),则不会应用_Viewstart中的布局。 _Viewstart用于默认布局,因此您无需在每个页面上指定它。