在.net mvc4 / 5中基于用户更改页面元素样式

时间:2013-12-03 10:59:48

标签: .net asp.net-mvc-4 razor

我正在开发一个.net mvc4 / 5网站,为第三方公司的用户提供gui。我们想根据用户所属的公司更改网站上的某些样式元素,如徽标或某些CSS。

现在我正在保存属于mvc Session的用户,并为我想要更改的项创建了部分视图。在视图中,我正在检查会话变量,并根据我提供的正确徽标。

实施例

@if (Session["affiliation"] != null)
{
    var affiliation = Session["affiliation"].ToString();

    if (affiliation == "Company1")
    {
        <img src="~/Content/img/logo1.png" class="navbar-logo" />
    }
    else if (affiliation == "Company2")
    {
        <img src="~/Content/img/logo2.png" class="navbar-logo" />
    }
}

这显然不会扩展。有没有人有更好的解决方案? 理想情况下,我想基于路径上的页面元素的样式。例如,那样 http://www.page.com/Company1http://www.page.com/Company2指向同一个控制器,但视图中的某些信息会根据路径元素而变化。如果不在视图中创建太多混乱,这可能吗?

1 个答案:

答案 0 :(得分:1)

您可以使用特定于浏览器的模式 - 实际上这不是一个不同的浏览器,只是一个不同的视图。

在Application_Start

DisplayModeProvider.Instance.Modes.Insert(0, new DefaultDisplayMode("Company1")
{
    ContextCondition = (context => return context.Session["affliation"] == "Company1"// check for user)
});

然后在您的视图文件夹中,有Views / MyPage.Company1.cshtml

标题浏览器特定视图

下的ASP.Net/MVC处的更多信息