2011-10-21 17 views
2

ASP.NET Webアプリケーションの実行時に使用されているCSSファイルを変更したいと思います。実行時にCSSファイル(テーマ)を変更する(ASP.NET)

私は2つのCSSファイル、red.cssblue.cssを持っているとしましょう。

私は、次のアプローチを試みた:マスターページのPage_Loadで

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

Styles.Href = Global.CSSPath;

私は次のリンクを持って、私のマスターページでは

Global.asax:

public static string CSSPath = "red.css";(同じフォルダ内にあると仮定します)

このアプローチは機能します。もちろん、CSSPathの値を変更してblue.cssなどにする機能を簡単に実装することもできます。これは、これが1人のユーザーにしか影響しないのか、Webアプリケーションを使用する全員に影響を与えるのかを知りたいと思います。

1人のユーザーにのみ影響する場合:大変です、ありがとう!そうでない場合:特定のユーザー/セッションの実行時にテーマを変更できるようにするにはどうすればよいですか?あなたは、静的(グローバル)変数から値を読んでいるよう

おかげで、

デニス

答えて

3

にそれはすべてのユーザーに影響します。

実行時にテーマを変更するには、今のところサーバー側で行うことができますが、ユーザー固有の値をSessionから取得する必要があります。

+0

ありがとう、それは私が探していたものです! Global.asaxのすべての方法でセッションにアクセスできないので、具体的なアプローチがありますか? –

+0

あなたはいつも組み込みのASP.NETテーマを使用するオプションを持っています。また、グローバルレベルでこれを行うのではなく、すべてのページに共通の動作を提供することもできます。これまでは、各ページをSystem.Web.UI.Pageから派生した基本クラスから継承していました。ここでは、パイプラインの適切なメソッドをオーバーライドして、ここにプロパティを設定します。セッションは利用可能になり、すべてのWebFormsページが新しい基本クラスから継承されている限り、「無料」のためにこの動作が得られます。希望は意味をなさない。 –

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> 
関連する問題