【发布时间】:2012-03-21 23:23:48
【问题描述】:
在我的 Views 根文件夹中,我有 _ViewStart.cshtml,其中有:
@{
Layout = "~/Views/Shared/_Layout.cshtml";
Page.Title = "Using Root ViewStart!";
}
然后在嵌套的 Views\ProjectCharter 文件夹中,我有另一个 _ViewStart.cshtml,如下所示:
@{
Layout = "~/Views/Shared/_ProjectLayout.cshtml";
Page.Title = "Using Nested ViewStart!";
}
(请注意,_Layout.cshtml 和 _ProjectLayout.cshtml 文件都在同一个文件夹中,名为 Views\Shared)。
我遇到的问题是我的 Views\ProjectCharter 文件夹中的视图没有使用 _ProjectLayout.cshtml 布局...相反,它们仍在使用根 _Layout.cshtml(即使它们正确选择了“使用嵌套的 ViewStart”标题)。
有趣的是,如果我将 ActionMethod 更改为使用
返回视图return View("Create","~/Views/Shared/_ProjectLayout.cshtml",newProjectCharter);
而不仅仅是
return View(newProjectCharter);
那么视图确实使用了 _ProjectCharterLayout.cshtml 布局。知道我缺少什么吗?我不想改变我所有的 ActionMethod 来使用这个更冗长的重载。
【问题讨论】:
-
只是大声思考,但两个布局页面格式正确且名称空间正确?
-
是的。如前所述,当我使用更详细的 return View() 重载时,它可以工作。如果命名空间或格式正确存在问题,使用更详细的重载也将不起作用。
-
看this post。这似乎是 MVC3 上的一个问题:/ 但这家伙有一个很好的解决方案
标签: asp.net-mvc-3