Se l'attributo AutoEventWireup
è impostato su false
, gli eventi devono essere cablati manualmente. Tuttavia, non riesco a far sparare il Page_PreInit
. Direi che potrei fare in modo che il collegamento avvenga troppo tardi (una volta che abbiamo già superato lo Page_PreInit
), ma non sono sicuro di dove mettere i cavi.Cablaggio manuale dell'evento Page_PreInit, con AutoEventWireup impostato su false
Per esempio ...
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>");
}
I risultati codice di cui sopra "Page_Load licenziato!" visualizzato, ma nulla da Page_PreInit
. Ho provato base.OnInit(e)
sia prima che dopo i collegamenti, e questo non ha avuto alcun effetto.
Il grafico mostrato here indica che il metodo OnInit
arriva dopo l'evento PreInit
. Con questo in mente, ho provato a sovrascrivere OnPreInit
ea fare la stessa cosa --- nessun effetto.
L'articolo MSDN here dice esplicitamente che in caso di AutoEventWireup
insieme ai false
, gli eventi possono essere collegati in un sovresposta OnInit
. L'esempio che usano è Page_Load
e, naturalmente, funziona esattamente come fa per me, ma non risolve il problema per cui non sembra funzionare per l'evento Page_PreInit
.
La mia domanda è: come posso ottenere l'evento Page_PreInit
collegato in caso di AutoEventWireup
impostato false
?
Capisco che ci sono alternative come elencato su MSDN page, ad esempio utilizzando il costruttore della pagina. Mi piacerebbe sapere in particolare come fare come suggeriscono con OnInit
.
hai avuto modo di farlo nel costruttore o prima di chiamare 'base.OnInit'. – Strelok
Sfortunatamente mettendo le righe sopra la base. OnInit (e) non ha alcun effetto e puntare a un evento precedente (come OnPreInit) non raggiungerà comunque l'evento Page_PreInit. – CptSupermrkt