【问题标题】:_ViewStart.cshtml with nested layouts_ViewStart.cshtml 与嵌套布局
【发布时间】:2012-04-26 08:47:17
【问题描述】:

我有以下项目结构:

_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->Our page

但如果我尝试使用 _Blue.cshtml 呈现 Index.cshtml,则 not 应用了 _Layout.cshtml。 我期待 _Layout.cshtml 按照约定使用 _viewstart 应用于 _Blue.cshtml。相反,我得到的 Index.cshtml 页面只应用了 _Blue.cshtml 模板。

我的假设错了吗?

提前致谢!

更新:

控制器方法:

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

    return View("Index");
}

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

【问题讨论】:

  • 你是从控制器返回 View 还是 PartialView?
  • @Chuck Norris:对不起,忘了说,我返回 View("Index")

标签: asp.net-mvc razor


【解决方案1】:

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

【讨论】:

  • 好吧,我原以为它会应用于_Blue.cshtml,其中未指定布局。之后,通过将 _Blue.cshtml 应用到我的页面,我期望得到两者。那样不行吗?
  • 不行,_viewstart中的布局页面只适用于普通页面,不适用于其他布局页面。如果我能找到描述确切行为的文档,我会发布链接。
猜你喜欢
  • 2019-11-02
  • 2023-03-09
  • 1970-01-01
  • 2011-09-14
  • 1970-01-01
  • 1970-01-01
  • 2013-10-01
  • 2011-05-21
  • 1970-01-01
相关资源
最近更新 更多