C# 在ASP.NET MVC3项目(Razor)中使用不同的布局

C# 在ASP.NET MVC3项目(Razor)中使用不同的布局,c#,.net,asp.net-mvc-3,razor,C#,.net,Asp.net Mvc 3,Razor,我的ASP.NET MVC3项目一方面由网站本身组成,另一方面由类似“管理控制面板”的东西组成。这意味着我必须使用2个完全不同的主布局 有几种方法可以实现这一点: 在每个管理视图的顶部,我可以添加@{Layout=“~/…/\u AdminLayout.cshtml”} 我还可以在管理控制器中使用重载视图方法,例如返回视图(“索引”,“_AdminLayout”,viewModel) 但这两种方法都与干式原理有一点不同 最常见的方法是什么? 是否有一种方法可以在\u ViewStart文件中

我的ASP.NET MVC3项目一方面由网站本身组成,另一方面由类似“管理控制面板”的东西组成。这意味着我必须使用2个完全不同的主布局

有几种方法可以实现这一点:

  • 在每个管理视图的顶部,我可以添加@{Layout=“~/…/\u AdminLayout.cshtml”}
  • 我还可以在管理控制器中使用重载视图方法,例如返回视图(“索引”,“_AdminLayout”,viewModel)
但这两种方法都与干式原理有一点不同

最常见的方法是什么? 是否有一种方法可以在\u ViewStart文件中加入一些逻辑,自动决定是使用管理还是正常页面布局,如果是,如何使用

在这种情况下,这是有益的,我的路线为两个部分是不同的

Normal page: {controller}/{action}/{id}
Admin page: admin/{controller}/{action}/{id}

创建一个管理区域并在该区域的_ViewStart文件中设置管理主布局如何?

创建一个管理区域并在该区域的_ViewStart文件中设置管理主布局如何?

谢谢。这正是我想到的,但我需要一点关于决策逻辑的帮助。如何决定在_ViewStart中加载普通布局还是管理布局?请参见上面的“我的编辑”。编辑:啊,现在我明白了。你说“创建一个管理区”是指一个路由区吗?谢谢,我知道这样的东西是存在的,但当我需要它时,我没有想到。谢谢。这正是我想到的,但我需要一点关于决策逻辑的帮助。如何决定在_ViewStart中加载普通布局还是管理布局?请参见上面的“我的编辑”。编辑:啊,现在我明白了。你说“创建一个管理区”是指一个路由区吗?谢谢你,我知道这样的东西是存在的,但当我需要它时,我没有想到它。