在运行时更改CSS文件(主题)(ASP.NET)

时间:2011-10-21 11:17:16

标签: c# asp.net css theming

我想更改在ASP.NET Web应用程序运行时使用的CSS文件。

假设我有2个CSS文件,red.cssblue.css

我尝试了以下方法:

在我的母版页中,我有以下链接:

<link rel="Stylesheet" ID="Styles" runat="server"/>

在母版页Page_Load:

Styles.Href = Global.CSSPath;

的Global.asax:

public static string CSSPath = "red.css";(假设它位于同一个文件夹中)

这种方法有效。当然,我可以轻松实现一些功能来改变CSSPath的价值并使其成为blue.css或其他任何东西 - 现在我想知道这是否只影响一个用户或每个人使用我的Web应用程序。

如果它只影响一个用户:太棒了,谢谢!如果没有:我应该怎么做才能在运行时为特定用户/会话更改主题?

谢谢,

丹尼斯

2 个答案:

答案 0 :(得分:3)

尝试在html

中添加类似内容
    <script runat="server">

    protected void Page_Init(object sender, EventArgs e)
    {   
      HtmlLink csslink = new HtmlLink();
      csslink.Href = "~/red.css";
      csslink.Attributes.Add("rel", "stylesheet");
      csslink.Attributes.Add("type", "text/css");
      Page.Header.Controls.Add(csslink);    
    }
   </script>

答案 1 :(得分:3)

当您从静态(全局)变量中读取值时,它将影响所有用户。

要在运行时更改主题,您可以像现在一样在服务器端执行此操作,但是您需要从会话中获取特定于用户的值。