css - 在 .NET MVC 中实现动态 CSS 的最佳方式

标签 css asp.net-mvc razor

我正在尝试使用 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/

相关文章:

css - Bootstrap 的 dashboard.css 样式表在哪里?

javascript - resharper 9 在 html 元素的 javascript 事件处理程序中添加了空格

jquery - asp.net razor 页面 webmatrix ajax post 不起作用

c# - 使用 HttpClient 的最佳实践

C# Razor 语法 - html.display 用于显示为文本,而不是 html

asp.net-mvc - Web 的图表编辑器/设计器/向导组件

c# - 如何将 span 元素放入 ActionLink MVC3 中?

CSS:对多个 ID 使用单个规则

css - 长内部样式表会影响 SEO 吗?

html - 如何在图片右侧显示input标签