2009-03-20 10 views
5

J'ai une page de contenu remplaçant l'événement OnInit d'une page maître. Le remplacement fonctionne correctement, jusqu'à ce que je mette un contrôle d'utilisateur personnalisé sur la page: dans ce cas, l'événement OnInit ne se déclenche pas pour la page de contenu (aucun contrôle n'est utilisé dans le contrôle utilisateur)Utilisation de l'événement OnInit dans asp.net

Quelles sont les causes/solutions possibles pour ce? (J'utilise l'événement OnInit pour créer des contrôles dynamiques)


Edit:

maintenant j'ai essayé ceci dans la page de contenu:

(Les pistes de partie de onPreInit, mais Masters_Init ne soit pas appelé ...)

protected override void OnPreInit(EventArgs e) 
    { 
     base.Master.Init += new EventHandler(Masters_Init); 
    } 

    void Masters_Init(object sender, EventArgs e) 
    { 
    //code 
    } 

Répondre

17

Appelez-vous le base.OnInit?

public override void OnInit(EventArgs e) 
{ 
    // code before base oninit 
    base.OnInit(e); 
    // code after base oninit 
} 

Mise à jour

public class Page1 : Page 
{ 
    public Page1 : base() { 
    PreInit += Page_PreInit; 
    } 
    void Page_PreInit(object sender, EventArgs e) 
    { 
    Master.Init += Master_Init; 
    } 
    void Master_Init(object sender, EventArgs e) 
    { 
    //code 
    } 
} 

également comme mentionné dans les commentaires que je recommande ne surchargez pas les événements si vous n'avez pas, mais si vous devez être sûr d'appeler la base. donc dans votre édition ci-dessus, il devrait être

protected override void OnPreInit(EventArgs e) 
{ 
    base.OnPreInit(e); 
    base.Master.Init += new EventHandler(Masters_Init); 
} 
+0

sûr, mais l'événement ne se déclenche pas: il n'a pas d'importance de toute façon – akosch

+0

Pouvez-vous abonner juste à l'événement Init du masterpage au lieu de remplacement OnInit? – bendewey

+0

Si cela ne fonctionne pas, postez du code dans votre question. – bendewey

Questions connexes