2009-03-20 9 views
5

Tengo una página de contenido que anula el evento OnInit de una página maestra. La anulación funciona bien, hasta que puse un control de usuario personalizado en la página: en este caso, el evento OnInit no se activa para la página de contenido (no se utilizan anulaciones en el control de usuario)Uso del evento OnInit en asp.net

¿Cuáles son las posibles causas/soluciones para ¿esta? (Utilizo el evento OnInit para crear controles dinámicos)


Editar:

ahora he intentado esto en la página de contenido:

(la parte corre OnPreInit, pero Masters_Init no recibe llamado ...)

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

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

Respuesta

17

¿Está llamando a la base.OnInit?

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

actualización

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 
    } 
} 

También como se ha mencionado en los comentarios que recomendaría no anulando los acontecimientos si no tiene que hacerlo, pero si tiene que estar seguro de que llamar a la base. por lo que en el texto de arriba Cabe

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

seguro, pero el evento no está disparando: por lo que no importa de todos modos – akosch

+0

¿Puede usted acaba de suscribirse al evento Init del masterpage en lugar de OnInit anulación? – bendewey

+0

Si no funciona, publique un código en su pregunta. – bendewey

Cuestiones relacionadas