2009-08-08 9 views
3

masteページでは、レイアウトを定義するスタイルシートを設定します。masterpageでコードシートのスタイルシートを変更する

<link id="layoutStylesheet" href="CSS/Layout3Col.css" rel="stylesheet" type="text/css" runat="server" /> 

私はマスターページを継承するShowDoc.aspxページを持っています。
特定のパラメータがクエリ文字列のShowDoc.aspxに渡されたときに、別のCSSファイルをロードします。

どうすればいいですか?
マスターページにpublicプロパティを定義して、showDoc.aspxがそれにアクセスしてlayoutStylesheetを変更できるようにする必要がありますか?

答えて

9

あなたがでShowDocページのマスタープロパティを使用して、スタイルシートのリンクを見つけることができますPage_Loadを作成し、そこでHrefプロパティを再定義します。あなたはそれがこれを変更したい、とどのくらいの他に同時に変更され、ネストされたマスターページを検討する必要があります持っているどのように多くのページによっては

HtmlLink link = Page.Master.FindControl("layoutStyleSheet") as HtmlLink; 
link.Href = ...your chosen stylesheet... 
0

異なる方法の束が、最も簡単なのは、ちょうどあなたのマスターページののForm_Loadにコードのこの種を追加することがあります

switch (Request["whateverstyle"]) { 
    case "style1" : layoutStylesheet.Attributes["href"] = "style1.css"; 
    case "style2" : layoutStylesheet.Attributes["href"] = "style2.css"; 
    ... 
} 
+0

効率的ですか?このマスターページを継承する多くのページのうちの1ページだけ はcssを切り替える必要がありますが、これですべてのpafeがチェックされます。 –

0

ルートマスターページでは、doctype/html/head/bodyとすべての共有アイテムを定義できます。あなたの "子"マスターページはそれを自分のマスターページとして使うことができます。ページは子のマスターページのみを使用します。

フォームの外でContentPlaceHolderコントロールを使用できるので、HEAD要素に1つ入れることができます。

+0

「印刷バージョン」が選択されている場合、「showdoc.aspx」は1ページのみです。 –

+0

これはちょうどネストされたマスターページを使う価値はないでしょう。 –

関連する問題