Si el atributo AutoEventWireup
está establecido en false
, los eventos se deben cablear manualmente. Sin embargo, no puedo hacer que el Page_PreInit
se dispare. Supongo que podría estar haciendo que el cableado suceda demasiado tarde (una vez que ya hemos pasado el Page_PreInit
), pero no estoy seguro de dónde colocar los cables.Cablear manualmente el evento Page_PreInit, con AutoEventWireup establecido en falso
Por ejemplo ...
protected override void OnInit(EventArgs e)
{
base.OnInit(e)
PreInit += new EventHandler(Page_PreInit);
Load += new EventHandler(Page_Load);
}
protected void Page_PreInit(object sender, EventArgs e)
{
Response.Write("Page_PreInit event fired!<br>"); //this is never reached
}
protected void Page_Load(object sender, EventArgs e)
{
Response.Write("Page_Load event fired!<br>");
}
el código anterior da como resultado "evento Page_Load despedido!" se muestra, pero nada de Page_PreInit
. Intenté base.OnInit(e)
antes y después de los cambios, y eso no tuvo ningún efecto.
El gráfico que se muestra here dice que el método OnInit
en realidad viene después del evento PreInit
. Con eso en mente, intenté sobreescribir OnPreInit
y hacer lo mismo --- sin efecto.
El artículo de MSDN here dice claramente que en el caso de AutoEventWireup
conjunto de false
, los eventos pueden ser cableados en un overriden OnInit
. El ejemplo que usan es Page_Load
, y por supuesto que funciona igual que para mí, pero no abordan el hecho de que esto no parece funcionar para el evento Page_PreInit
.
Mi pregunta es: ¿cómo puedo obtener el evento Page_PreInit
cableada en el caso de AutoEventWireup
establecido en false
?
Entiendo que hay alternativas como las que figuran en el MSDN page, como el uso del constructor de la página. Me gustaría saber específicamente cómo hacer lo que sugieren con OnInit
.
Tienes que hacerlo en el constructor o antes de llamar a 'base.OnInit'. – Strelok
Lamentablemente, colocar las líneas sobre base.OnInit (e) no tiene ningún efecto, y apuntar a un evento anterior (como OnPreInit) todavía no llegará al evento Page_PreInit. – CptSupermrkt