2009-04-15 23 views
1

コンテンツページでマスターページが応答できるイベントを発生させるにはどうすればよいですか?ASP.NETのページをマスターページに送信する

たとえば、マスターページを使用しているコンテンツページがあります。マスターページには、Webサイトのナビゲーションバーが含まれています。私が行っているページに応じて、ナビゲーションバーの現在のページメニュー項目のCSSクラスを変更するイベントをマスターページに送信したいと思います。

私はVisual Studio 2008とASP.NET 3.5とC#を使用しています。

ありがとうございます!

答えて

2

編集は、実際にイベントが必要ではないという質問から、マスターのメソッドを呼び出すだけです。私の頭の上から、マスターに:あなたのページで、その後

public void ChangeCss(string className) 
{ 
    someObject.CssClass = className; 
} 

(this.Master as MyMasterType).ChangeCss("myclass"); 
0

ベースページクラスを作成します。同じデリゲート&イベントを作成します。そして、マスターページでは、これを行う -

(Page as BasePage).Event += attach event handler here in the master page. 

ページクラスは次のようでなければならない -

public class MyPage : BasePage { } 

BasePageクラスのクラスは次のようでなければなりません - イベントが発生した場合

public class BasePage : System.Web.UI.Page { } //This will go in the App_Code folder. 
2

すべてのコンテンツページでKirtanのBasePageソリューションを使用します。基本ページが適切でない場合は、イベントが発生した各ページ内で、ページが読み込まれるときにこれを追加します。

thisPage.Event += (Page.Master as YourMasterPageClass).YourCustomEventHandler 
+0

これはうまくいきました。ありがとう! –

0

イベントは、あなたのマスターページに必要与えられ、これを示すための最良の方法のように見えるしていません。あなたのページを理解すれば、ページにはナビゲーションの「キー」を示す標準的なプロパティを持つことができます。あなたのマスターページのコードで

protected override void OnInit(EventArgs e) 
{ 
    base.OnInit(e); 

    var navigatable = this.Page as INavigatable; 

    if (navigatable != null) 
     this.Navigation.ActiveKey = navigatable .NavigationKey; 
} 

ナビゲートインタフェース:

public interface INavigatable 
{ 
    string NavigationKey { get; } 
} 

ページインスタンス:

public class AboutPage : Page, INavigatable 
{ 
    public string NavigationKey 
    { 
     get { return "About"; } 
    } 
} 
0

あなたはEventBubblingと呼ばれる技術を使用してイベントを発生させることができます。

関連する問題