2008-10-15 7 views
2

Comment intercepter un événement personnalisé déclenché par une page maître?Evénements et délégués avec des pages maîtres ASP.NET

Sur ma page principale J'ai un événement personnalisé et délégué:

public event SignOutHandler SignOut; 
public delegate void SignOutHandler(); 

Ceci est déclenché lorsqu'un bouton lien sur la page principale est cliqué.

if (SignOut != null) 
{ 
    SignOut(); 
} 

Dans un contrôle utilisateur sur la page Je voudrais souscrire à cet événement, mais je ne sais pas comment je suis censé y avoir accès. Normalement, je ferais quelque chose comme:

MyInstantiatedMasterPage.SignOut += new MyMasterPage.SignOutHandler(MyEvent); 

mais le fait d'utiliser une page maître signifie que cela n'est pas possible.

Répondre

4

Il est instancié comme un objet global, ce qui est ce que vous aurez besoin d'utiliser:

((MyMasterPage)Master).SignOut += new MyMasterPage.SignOutHandler(MyEvent); 
+0

Je ne peux pas sembler accéder MyMasterPage.SignOutHandler (MyEvent); à partir de mon contrôle utilisateur. Je peux cependant y accéder à partir d'un formulaire web. –

+0

C'est bizarre. S'ils sont dans le même espace de noms, vous devriez pouvoir accéder à un délégué (non-instance) sur une page maître depuis n'importe où. Le contrôle auquel vous essayez d'accéder se trouve-t-il dans le même espace de noms que la page maître? – TheSmurf

+0

Je n'ai aucun espace de noms dans mes masters, pages ou contrôles, mais ils résident tous dans leurs propres dossiers. Les espaces de noms sont-ils impliqués par les noms de dossier? Quoi qu'il en soit, cela n'expliquerait pas pourquoi ma page peut accéder au master mais pas à mon contrôle. –

Questions connexes