2011-12-16 38 views
21

Veo que algunas personas están usando Page_Load y Page_PreRender en la misma página aspx. ¿Puedo saber exactamente por qué necesitamos invocar ambos métodos en la misma página asp.net?Uso de Page_Load y Page_PreRender en ASP.Net

Por favor, vea el código de abajo,

protected void Page_Load(object sender, EventArgs e) 
    { 
     try 
     { 
      dprPager.ButtonClickPager += new EventHandler(dprPager_ButtonClickPager); 

      if (!Page.IsPostBack) 
      { 
       InitPager(); 

      } 
     } 
     catch (Exception ex) 
     { 

     } 

    } 

    protected void Page_PreRender(object sender, EventArgs e) 
    { 
     erMsg.Visible = !string.IsNullOrEmpty(lblError.Text); 
    } 
+1

No * necesita * utilizar ambas, ¿hay algún ejemplo específico que tenga problemas para comprender? 'Page_Load' se llama primero, y luego se llamará a' Page_PreRender'. – wsanville

+0

Por favor, compruebe que he agregado el código. – Roshe

+0

Estoy tratando de determinar si una devolución de datos fue causada por el botón 'agregar' el control del servidor o por una actualización de página para que pueda detener la inserción de un registro en mi asp: GridView al actualizar la página. Pero no puedo encontrar el evento Página PreRender después de mirar aquí: http://aspalliance.com/687_Preventing_Duplicate_Record_Insertion_on_Page_Refresh.4 estoy por desgracia tener que publicar aquí como también lo ha dejado mi nuevas preguntas :( –

Respuesta

24

Depende de sus requisitos.

Carga de página: realiza acciones comunes a todas las solicitudes, como la configuración de una consulta de base de datos. En este punto, los controles del servidor en el árbol se crean e inicializan, el estado se restaura y los controles de formulario reflejan los datos del lado del cliente. Consulte Manejo de eventos heredados.

Prendición: Realice las actualizaciones antes de que se muestre la salida. Cualquier cambio realizado en el estado del control en la fase de preenvío puede guardarse, mientras que los cambios realizados en la fase de renderización se pierden. Consulte Manejo de eventos heredados.

Referencia: control de ejecución del ciclo de vida de MSDN

tratar de leer sobre

ASP.NET Page Life Cycle Overview ASP.NET

Control Execution Lifecycle

Saludos

+0

¿Por qué no puedo mover toda la lógica a PreRender? – Gqqnbig

2

Load sucede después de ViewState y Postdatum se envía a todos tu servicio r controles laterales mediante controles ASP.NET que se están creando en la página. Page_Init es el evento disparado antes de que ViewState y PostData se restablezcan. Page_Load es donde normalmente realiza una iniciación de toda la página. Page_PreRender es el último evento que tiene la oportunidad de manejar antes de que el estado de la página se represente en HTML. Page_Load es el evento más típico para trabajar.

2

Un gran requisito para implementar PreRender en lugar de Load es la necesidad de trabajar con los controles en la página. En Page_Load, los controles no se representan y, por lo tanto, no se pueden referenciar.

0

El procesamiento del formulario web ASP.NET tiene lugar en etapas. En cada estado se elevan varios events. Si está interesado en conectar su código en el processing flow (en el lado del servidor), debe gestionar el evento de página apropiado.

0

El punto principal de las diferencias como @BizApps es que el evento Load ocurre justo después de que ViewState se rellena mientras el evento PreRender ocurre más tarde, justo antes de la fase de renderizado y después de que todos los controladores de eventos de acción individuales se estén ejecutando . Por lo tanto, cualquier modificación realizada por el controlador de eventos de acciones de los controles debería actualizarse en la jerarquía de control durante PreRender como ocurre después.

25

La principal diferencia entre Page_LoadPage_PreRender y es que en el método Page_Load no todos sus controles de página están completamente inicializado (cargado), ya que los controles individuales Load() métodos no ha sido llamado todavía. Esto significa que tree aún no está listo para renderizar. En Page_PreRender, garantizaste que todos los controles de página están cargados y listos para renderizar. Técnicamente, Page_PreRender es su última oportunidad de ajustar la página antes de que se convierta en una secuencia HTML.

Cuestiones relacionadas