Изменить CSS-файл (тему) во время выполнения (ASP.NET) - PullRequest
2 голосов
/ 21 октября 2011

Я хотел бы изменить CSS-файл, который используется во время выполнения моего веб-приложения ASP.NET.

Допустим, у меня есть 2 CSS-файла, red.css и blue.css.

Я попробовал следующий подход:

На моей мастер-странице у меня есть следующая ссылка:

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

В мастереPages Page_Load:

Styles.Href = Global.CSSPath;

Global.asax:

public static string CSSPath = "red.css"; (при условии, что он находится в той же папке)

Этот подход работает.И, конечно, я мог бы легко реализовать некоторые функциональные возможности, чтобы изменить значение CSSPath и сделать его blue.css или чем-то еще - теперь я хотел бы знать, затрагивает ли это только одного пользователя или всех, кто использует мое веб-приложение.

Если это касается только одного пользователя: Отлично, спасибо!Если это не так: что я должен сделать, чтобы добиться возможности менять темы во время выполнения для конкретного пользователя / сеанса?

Спасибо,

Деннис

Ответы [ 2 ]

3 голосов
/ 21 октября 2011

Это повлияет на всех пользователей, когда вы читаете значение из статической (глобальной) переменной.

Для изменения темы во время выполнения вы можете сделать это на стороне сервера, как сейчас, но вам нужновыберите конкретное для пользователя значение, возможно, из сеанса.

3 голосов
/ 21 октября 2011

попробуйте добавить что-то подобное в ваш 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>
...