我正在开发一个.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/Company1和http://www.page.com/Company2指向同一个控制器,但视图中的某些信息会根据路径元素而变化。如果不在视图中创建太多混乱,这可能吗?
答案 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处的更多信息