在.NET MVC中实现Dynamic CSS的最佳方法

时间:2015-04-12 19:36:49

标签: css asp.net-mvc razor

我想尝试两种不同的主题(基本上是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文件。

您认为哪种方法更好?

1 个答案:

答案 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”