我想尝试两种不同的主题(基本上是2种不同的 CSS )。用户可以选择浅色或深色主题。如果他选择了灯光主题,我需要加载主题 CSS 的灯光,如果他选择了黑暗主题,我需要加载黑暗主题 CSS 。
我试过这个
.NET MVC: How to implement different page appearance per user?
但无法使其正常工作,因为Url.Action
只是生成链接而且它没有从Action方法返回结果。
我有一个布局页面,我的网站中的所有页面都继承了这个页面,我想以某种方式将其加载到布局页面中。
另一种方法是 http://forums.asp.net/t/1892421.aspx?Dynamic+Themes+in+MVC+Razor
可以在HttpContext.Application["Theme"]
中设置 css 吗?
我遇到的另一种方法是在加载页面时使用javascript设置css文件。
您认为哪种方法更好?
答案 0 :(得分:1)
我会在布局页面中使用以下方法。 也许我会/可以改进“GetThemeName”方法,以便它返回完整的链接字符串。这样布局页面只包含布局功能而不是代码。
例如:
@switch (UserSettings.GetThemeName())
{
case "Red":
<link rel="stylesheet" href="/Content/ThemeRed/css/default.css" />
break;
case "Blue":
<link rel="stylesheet" href="/Content/ThemeBlue/css/default.css" />
break;
default:
<link rel="stylesheet" href="/Content/Default/css/default.css" />
break;
}
UserSettings.GetThemeName是一个公共静态函数,用于获取用户当前的“主题名称”或“主题ID”