动态更改MVC 3中的ViewStart布局路径

ice*_*pon 5 model-view-controller asp.net-mvc-3

在我的MVC项目中有2个区域,即Admin和Client,我需要为客户端动态配置Layout,在_ViewStart(在客户端)文件中将为所有客户端页面设置布局.

Layout = "~/Views/Shared/_Layout.cshtml";
Run Code Online (Sandbox Code Playgroud)

那么如果我们需要更改客户端布局,我们可以在_ViewStart文件中更改cshtml文件的布局路径吗?我无法找到如何更改ViewStart文件内部或在这种情况下是否有另一种解决方案.

谢谢你的帮助 :)

Bra*_*tie 11

请记住,其中的任何内容@{ ... }都被视为代码.因此,在那里放置一个条件来改变它的继承方式应该是一个简单的问题:

@{
  Layout = "~/Views/Shared/_Layout.cshtml";
  if (User.Current.IsAuthenticated) {
    Layout = "~/Views/Shared/_AdminLayout.cshtml";
  }
}
Run Code Online (Sandbox Code Playgroud)

虽然你可以更好地看待主题(并有一个管理员/用户主题).或者,您可以让自己_Layout.cshtml更聪明,并根据条件处理不同的视图.

另请参阅:MVC3 Razor - 有没有办法根据浏览器请求更改布局?


dkn*_*ack 6

您的问题没有足够的信息来为您提供完整的代码示例.

但基本上你可以做到这一点

if (InsertIsAdminLogicHere) {
     Layout = "~/Views/Shared/_AdminLayout.cshtml";
} else {
     Layout = "~/Views/Shared/_Layout.cshtml";
}
Run Code Online (Sandbox Code Playgroud)

如果您向我们展示您是否如何确定管理员,我们可以提供更多帮助.

希望这可以帮助