我正在尝试使用 2 个不同的主题(基本上是 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 文件。
您认为哪种方法更好?
最佳答案
我会在布局页面中使用以下方式。 也许我会/可以改进“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 是一个公共(public)静态函数,它获取用户当前的“主题名称”或“主题 ID”
关于css - 在 .NET MVC 中实现动态 CSS 的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29593762/