我有以下项目结构:
/Views/Shared/_Layout;
/Areas/Area1/Views/ControllerName/Index;
...
- /Areas/AreaN/Views/ControllerName/Index。
有没有办法强制所有区域使用_Layout作为基本布局?
有没有办法在不添加_ViewStart文件的情况下做到这一点(例如,通过路由配置)?
另请参阅:
How do I specify different Layouts in the ASP.NET MVC 3 razor ViewStart file?
最佳答案
您只需添加一个名为:
的文件_ViewStart.cshtml
在每个区域 View 文件夹下:
/Areas/Area1/Views/_ViewStart.cshtml
并编辑文件以指向根布局,如下所示:
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
为了使其工作,您不必在 View 的布局属性中指定值,如果这样做,您将覆盖全局布局
注意:正如托尼提到的,您可以编辑每个 View 的布局属性以指向根布局,但这不是推荐的方法,因为您会将 View 与布局耦合起来改变它会很痛苦
编辑 1
如果您想使用代码来设置默认 View 的布局,也许您应该考虑编写自定义 View 引擎。
尝试在 google 上搜索自定义 RazorViewEngine
和 RazorView
这篇文章可能是一个很好的起点
http://weblogs.asp.net/imranbaloch/archive/2011/06/27/view-engine-with-dynamic-view-location.aspx
我还没有做过这样的事情,但我希望我能为你指明正确的方向
关于asp.net-mvc - 强制所有区域使用相同的布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13277126/