2009-06-04 9 views
1

私はこの昨日、関連する質問をして、どうしたらいいのか聞かれました。Masterpage - > SubMasterPage - > Web Form ...サブページのMasterpageのプロパティを取得する

「TheMaster」と呼ばれるマスターページがあります。私は2つのサブマスターページ "Sub1"と "Sub2"を持っています。彼らはどちらも "TheMaster"のMasterpage指令を持っています。 Webフォームには、「Sub1」または「Sub2」のMasterpage指示があります。これらは実際の名前ではありません。

「TheMaster」では、ユーザーがどのページにいるかを調べ、それらがWeb.sitemapのどこにあるかを調べ、それを使用して、Web.sitemapノードと親と親の親を持っています彼らはすべて存在します。これを使って動的にナビゲーションを構築し、現在のページを強調表示します。

私たちのデザイナーは、このナビゲーションが表示されるいくつかの場所を持っています。上のnav、sub nav、terrierary navを左に、 "breadcrumb"スタイルでhome - > parentparentnode - > parentnode - > currentpageを表示します。

レイアウト制約のため、このすべてを "TheMaster"で定義することはできません。

ので、情報のいくつかの他の部分と一緒に(「ザ・マスター」で、私は彼らの現在のノードを見つけて、「ザ・マスター」のパブリックプロパティとしてそれを保存します。

Sub1をで、それが使用されていても "ザ・マスターザ・マスター 『」それはマスターページだとして、から私のパブリックプロパティを見つけることができるように表示されません』。

私はこの情報は、カードのこの家を介してすべての道利用できるように得ることができる方法上の任意のアイデア?

試しました

Page.Master.myProp (nope) 
Parent.myProp (nope) 

これを動作させるために他の何かを考えることはできません。 "TheMaster"は基本的に "Sub1"についての知識がないので、Sub1にプロパティを設定してツリーの下に移動させることはできません。ツリーの下のノードは明らかに両親に気付かれません... ???

答えて

3

実際のMasterPageクラスにParentまたはPage.Masterをキャストします。

((MyMaster)Page.Master).myProp // found! 
+0

キャスティングは問題ありませんが、サブマスターは、サブマスターのプロパティとしてパブリックにしたいマスターのプロパティを実際に表示する必要があります。 –

0

キャスティングはあなたに届きますが、長期的にはそれほど清潔で保守的ではありません。私は非常に複雑なバージョンの作業を行ってきましたが、これを抽象化する一連のインタフェースを使用しています。 1つのレイヤーを持つ簡略版については、this blog postを参照してください。より多くのレイヤを追加するというトリックは、必要に応じていくつかのインターフェイスと抽象クラスを追加することです。

関連する問題