Wenn das Attribut AutoEventWireup
auf false
gesetzt ist, müssen die Ereignisse manuell verdrahtet werden. Jedoch kann ich nicht scheinen, die Page_PreInit
zu feuern. Ich nehme an, dass ich die Leitung möglicherweise zu spät passieren lassen würde (sobald wir schon hinter Page_PreInit
sind), aber ich bin mir nicht sicher, wo ich die Kabel anschließen sollte.Verkabeln des Ereignisses Page_PreInit manuell, wenn AutoEventWireup auf false gesetzt ist
Zum Beispiel ...
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>");
}
Der obige Code führt "gefeuert Ereignis Page Load!" angezeigt werden, aber nichts von . Ich probierte base.OnInit(e)
sowohl vor als auch nach den Kabeln, und das hatte keine Wirkung.
Die Grafik here besagt, dass die OnInit
Methode tatsächlich nach dem PreInit
Ereignis kommt. In diesem Sinne habe ich versucht, zu überschreiben und das gleiche zu tun --- keine Wirkung.
Der MSDN-Artikel here sagt ausdrücklich, dass im Fall von AutoEventWireup
Set false
können die Ereignisse in einer überschriebenen OnInit
verdrahtet werden. Das Beispiel, das sie verwenden, ist Page_Load
, und natürlich funktioniert das genauso wie bei mir, aber sie sprechen nicht an, dass dies nicht für das Ereignis funktioniert.
Meine Frage ist: Wie kann ich das Page_PreInit
Ereignis im Fall von AutoEventWireup
-false
gesetzt verdrahtet bekommen?
Ich verstehe, dass es Alternativen gibt, wie auf der MSDN page aufgeführt, wie die Verwendung des Konstruktors der Seite. Ich würde gerne genau wissen, wie man das mit OnInit
vorschlägt.
Du hast es in den Konstruktor zu tun oder vor dem Aufruf von 'base.OnInit'. – Strelok
Leider hat das Einfügen der Zeilen über base.OnInit (e) keine Auswirkung und das Erreichen eines früheren Ereignisses (z. B. OnPreInit) wird das Page_PreInit-Ereignis nicht erreichen. – CptSupermrkt