【问题标题】:Best way to implement Dynamic CSS in .NET MVC在 .NET MVC 中实现动态 CSS 的最佳方式
【发布时间】:2015-04-12 19:36:48
【问题描述】:

我正在尝试拥有 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 文件。

您认为哪种方法更好?

【问题讨论】:

    标签: css asp.net-mvc razor


    【解决方案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”

    【讨论】:

    • 谢谢罗纳德。你的回答产生了一些想法,我已经实现了。所以基本上我所做的很简单 @{ string stylepathname = @Html.Action("action","controller"} 然后在 CSS 中使用 stylepathname 像
    猜你喜欢
    • 2011-12-04
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多