2009-08-20 5 views
2

は私がSampleMaster.masterと呼ばれるマスターページを持っていると、このページには、Repeaterコントロールは、各コンテンツページに関連付けられている関連するタグを表示するために使用されますコンテンツページに依存しているマスターページコントロールを設定する最良の方法は何ですか?

Repeaterコントロールが含まれており、タグはコンテンツページの間で変化します

データ抽出メソッドTags.GetTags()は動作していますが、コンテンツページの内容に応じてマスターページでRepeaterコントロールを設定する最適な方法はわかりません。

コードは、マスターページのページコードの後ろにあるのか、コンテンツページのコードの後ろにあるのでしょうか?

答えて

5

マスターページに表示するタグを渡す子ページにプロパティまたはメソッドを公開することをお勧めします。あなたはあなたに以下のコンテンツページのaspxファイルを追加して、コンテンツページを経由して、あなたのマスターページで機能を公開することができます

if (this.Page is IMyTaggablePage) 
    var tags = (Page as IMyTaggablePage).GetTags(); 
+0

良い解決策:次に、あなたのコンテンツページにあなたが持つ関数を呼び出します

public void BuildMyCustomStuff(YouInputType in) { // Do something with the data passed in } 

だから、あなたはページのようなメソッドを持っているでしょう習得します。このメソッドを呼び出すには、this.PageをIMyTaggablePageにキャストする必要があります。 –

+0

ありがとうございます。それを逃した。 – Joel

+0

これは、マスターページにコンテンツページについて知る必要があります。コンテンツページでマスターにデータを送信すると、マスタは所有するコンテンツページの数や内容を気にしません。コンテンツページでマスターページをカスタマイズするようにインターフェイスを公開するだけです。 – Kelsey

0

できればそれをマスターページに入れる必要があります。理想的には、あなたのコンテンツページは親の知識がなく、どこにでも使用できると仮定する必要があります。

これは、コンテンツページのために、よりコンポーネント化され、再利用可能なデザインにつながります。

0

:たとえば

partial class myPage : IMyTaggablePage 
{ 
    // the following is an interface member 
    public List<string> GetTags() 
    { 
     return this.Taglist; // assuming taglist was populated somewhere on this page. 
    } 
} 

は、その後、あなたのマスターページにあなたのような何かを書くことができます。

<%@ MasterType VirtualPath="~/MasterPage.master" %> 

コンテンツページでは、マスターページから公開しているすべての方法にアクセスできるはずです。

Master.BuildMyCustomStuff(dataIn); 
関連する問題