2010-09-09 11 views
7

Estoy ejecutando un proyecto de ASP.NET 4.0.No se ha llamado a Page_PreInit?

La página .aspx tiene AutoEventWireup="true" en el encabezado.

Aunque se llama OnPreInit, Page_PreInit ¿no es así? ¿Alguien puede sugerir qué está mal?

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

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

Su sintaxis parece correcta. ¿Está esto definido en la página maestra? – Sauleil

+2

No pude reproducir el problema que describió. ¿AutoEventWireup está definido en la página maestra? –

+0

¿O estás heredando la página? – JBrooks

Respuesta

1

El evento Page_PreInit hace el fuego, se puede ver esto, si se pone un punto de interrupción en el inicio del evento y de paso a través de él en el tiempo de ejecución. El motivo por el que la "barra" de cadena no se está escribiendo en la pantalla es porque se sobrescribe con el OnPreInitEvent.

Consulte el código a continuación. Dé un paso adelante y verá cómo va en Page_PreInit y luego se sobrescribe en el OnPreInitEvent. Si comenta el evento TODO OnPreInit, verá que se escribe "Página_Prein" en la pantalla.

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"; 
    } 
} 
Cuestiones relacionadas