2010-09-09 4 views
7

Im Ausführen eines ASP.NET 4.0-Projekts.Page_PreInit nicht aufgerufen?

Die ASPX-Seite hat AutoEventWireup="true" in der Kopfzeile festgelegt.

Obwohl OnPreInit heißt, ist nicht? Kann jemand vorschlagen, was falsch ist?

protected void Page_PreInit(object sender, EventArgs e) 
{ 
    Response.Write("bar"); 
} 

protected override void OnPreInit(EventArgs e) 
{ 
    Response.Write("foo"); 
    base.OnPreInit(e); 
} 
+0

Ihre Syntax scheint in Ordnung zu sein. Ist das in der MasterPage definiert? – Sauleil

+2

Ich konnte das beschriebene Problem nicht reproduzieren. Ist AutoEventWireup auf der Masterseite definiert? –

+0

Oder erben Sie die Seite? – JBrooks

Antwort

1

Das Page_PreInit Ereignis wird, können Sie dies sehen, wenn Sie einen Haltepunkt zu Beginn der Veranstaltung gestellt und zur Laufzeit durch es betreten. Der Grund, warum der String "bar" nicht auf den Bildschirm geschrieben wird, ist, dass er von OnPreInitEvent überschrieben wird.

Bitte Code unten beachten. Schritt durch es und Sie werden feststellen, wie es in Page_PreInit geht und dann in der OnPreInitEvent überschrieben wird. Wenn Sie das GESAMTE Ereignis auskommentieren, wird "Page_PreInit" auf dem Bildschirm angezeigt.

using System; 

public partial class _Default : System.Web.UI.Page 
{ 
    string eventName = String.Empty; 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     Response.Write(eventName); 
    } 

    protected void Page_PreInit(object sender, EventArgs e) 
    { 
     eventName = "Page_PreInit"; 
    } 

    protected override void OnPreInit(EventArgs e) 
    { 
     base.OnPreInit(e); 
     eventName = "OnPreInit"; 
    } 
}