2012-02-29 5 views
0

私は2ページあります、それらを "receipts.com"と "business.receipts.com"と呼ぶことにしましょう。どちらもResponse.Redirect( "http://receipts2.com/default.aspx?mode=") を介して別のドメインのページにリンクしています。ここで、「モード」パラメータが参照ページです。読み込み時にCSSクラスをプログラムで変更しますか?

受信ページはクエリ文字列を調べ、「モード」パラメータに従って別のCSSクラスを選択する必要があります。

これはどのように達成されましたか?そしてこれは正しい方法ですか?

答えて

2

ような何かを行うことができます。 スタイルシートを扱うには、クライアント側とサーバー側の2つの方法があります。使用

クライアント側では、することができますparse the query stringと無効にスタイルシート:(document.getElementsByTagName("link")[i]).disabled = true;

をサーバー側では、あなたはthemesを使用するか、単にスタイル宣言およびshow /見分離コードを使用してそれらを隠す周りのプレースホルダを追加することができますResponse.QueryString["mode"]

<asp:PlaceHolder ID="placeHolder1" runat="server" Visible="false"> 
    <link rel="stylesheet" href="/alternate.css" media="all" /> 
</asp:PlaceHolder> 

とどこかにマスターページでの背後にあるコード:

if(Response.QueryString["mode"] == "blah") 
{ 
    placeHolder1.Visible = true; 
} 
1

document.referrerを使用すると、クエリ文字列を使用してページを渡すことはできません。

"受信したページがクエリ文字列内に表示され、別のCSSクラスを選択する必要があります"と言われると、そのクラス、つまりボディやpのような要素は何に設定されますか?

平野のJavascript

document.getElementById("MyElement").className = " yourClass"; 

jQueryの

$("p").addClass("yourClass"); 

おそらく、あなたは、CSSテーマを意味?

と私はあなたが別のPage-Themesを使用することができますjQueryの

$.get(stylesheet, function(contents){ 
    $("<style type=\"text/css\">" + contents + "</style>").appendTo(document.head); 
}); 
1

に探してお勧めしますが、あなたは

if (document.referrer == "blahblah") 
    document.write("<link rel='stylesheet' type='text/css' href='one.css' />) 
else 
    document.write("<link rel='stylesheet' type='text/css' href='two.css' />) 

を試みることができる:

あなたも使用することができます。もちろん、
protected void Page_PreInit(object sender, EventArgs e) 
{ 
    switch (Request.QueryString["mode"]) 
    { 
     case "receipts.com": 
      Page.Theme = "DefaultTheme"; 
      break; 
     case "business.receipts.com": 
      Page.Theme = "BusinessTheme"; 
      break; 
    } 
} 

コントロールに異なるCss-Classesを適用するには上記のコードを使用します。

+0

私はこれを試してみると思います。 Page_PreInitはこのコードを配置するための適切な場所です。ありがとう – Thomas

+0

@トーマス:はいhttp://msdn.microsoft.com/en-us/library/tx35bd89.aspx –

1

uが代わりにあなたが同じクラスと異なるスタイルシートを使用することができますクラス名をスワップのこの

{ 
string hrefstring = null; 

string mode = this.Page.Request.QueryString.Item("mode"); 


if (mode == "a") { 
    hrefstring = ("~/yourcss/a.css"); 

} else if (mode == "b") { 
    hrefstring = ("~/yourcss/b.css"); 
} 

css.Href = ResolveClientUrl(hrefstring); 
css.Attributes("rel") = "stylesheet"; 
css.Attributes("type") = "text/css"; 
css.Attributes("media") = "all"; 

Page.Header.Controls.Add(css); 
    } 
関連する問題