6

我的网站有一个单独的部分(路线),我想使用不同的布局/css等。

因此,当用户访问我网站的主要部分时,他们会获得默认布局。但是当他们登录并去商店时,商店部分(路线)使用不同的布局/css。

所以...

  • www.blahblahblah.com/
  • www.blahblahblah.com/admin/
  • www.blahblahblah.com/home/contactus/

...都使用默认的_Layout

但...

  • www.blahblahblah.com/store/
  • www.blahblahblah.com/store/admin/

...使用 _LayoutStore

我已经看到这是基于角色here(http://forums.asp.net/t/1653362.aspx/1)和here(How to use multiple Layout in MVC 3?)但我不想去做。我需要根据客户采取的路线(也就是他们在里面的视图)来选择布局。

预先感谢您的任何帮助。

4

1 回答 1

13

您是否查看过使用_ViewStart.cshtml任何给定视图文件夹中的文件?

如果这不是您正在寻找的内容,并且您希望路由中的值确定要使用的布局,您可以尝试创建一些帮助方法来返回要使用的布局:

    public static class LayoutHelper
    {
        public static string GetLayout(RouteData data, string defaultLayout = "")
        {
            if (data.Values["action"] == "edit")
                return "~/views/shared/_AdminLayout.cshtml";

            return defaultLayout;
        }
    }

然后你可以像这样从你的视图中调用它:

@{
    Layout = LayoutHelper.GetLayout(
        Request.RequestContext.RouteData,
        "~/views/shared/_layout.cshtml");
}

但在我看来,如果你在包含商店布局_ViewStart.cshtml的文件夹中创建了一个文件,Views/Store你会很高兴。

于 2012-08-24T18:31:42.943 回答