Menu

Ciclo de vida de una página ASP.NET

Mayo 27, 2011 - ASP.NET

A diario enfrentamos la tarea de desarrollar software, pero a veces en nuestro afán de construir rápido los aplicativos no tenemos en cuenta que cada evento en el ciclo de vida tiene una función especifica para cada tarea, así pues nos encontramos con la duda de: un DropDownList se debe llenar en el Page_Load con el Load del propio control?. En este post veremos cual es la manera correcta de hacerlo, ademas de dar un vistazo a todo el ciclo de vida de una página ASP.NET .

Toda la información que aquí se presenta ha sido tomada de la página de MSDN, por lo tanto son ellos quienes poseen el copyright de dicah información.

Los eventos del ciclo de vida

Evento de página Uso típico
PreInit Utilice este evento para lo siguiente:

  • Examine la propiedad IsPostBack para determinar si es la primera vez que se procesa la página.
  • Crear o volver a crear controles dinámicos.
  • Establecer una página maestra de forma dinámica.
  • Establecer la propiedad Theme de forma dinámica.
  • Leer o establecer los valores de las propiedades de perfil.
Nota
Si la solicitud es una devolución de datos, los valores de los controles todavía no se han restaurado del estado de vista. Si establece una propiedad de un control en esta fase, es posible que su valor se sobrescriba en el evento siguiente.
Init Se provoca cuanto todos los controles se han inicializado y se aplicado la configuración de máscara. Utilice este evento para leer o inicializar las propiedades del control.
InitComplete Lo provoca el objeto Page. Utilice este evento para tareas de procesamiento que requieran que todo el proceso de inicialización haya finalizado.
PreLoad Utilice este evento si necesita realizar tareas de procesamiento en su página o control antes de que se provoque el evento Load.

Después de que Page provoca este evento, carga su estado de vista y el de todos los controles y, después, procesa todos los datos de devolución incluidos con la instancia de Request.

Load Page llama al método del evento OnLoad en Page, realiza la misma operación de forma recursiva para cada control secundario, los cuales realizan la misma operación para cada uno de sus controles secundarios hasta que se cargan la página y todos los controles.

Utilice el método del evento OnLoad para establecer las propiedades de los controles y establecer las conexiones a bases de datos.

Eventos de control Utilice estos eventos para controlar eventos de control específicos, como un evento Click del control Button o un evento TextChanged del control TextBox.

Nota
En una solicitud de devolución de datos, si la página contiene controles de validación, compruebe la propiedad IsValid de Page y de cada uno de los controles de validación antes de realizar cualquier procesamiento.
LoadComplete Utilice este evento para las tareas que requieran que se carguen todos los demás controles en la página.
PreRender Antes de que se produzca este evento:

  • El objeto Page llama a EnsureChildControls para cada control y para la página.
  • Cada control enlazado a datos cuya propiedad DataSourceID esté establecida llama a su método DataBind. Para obtener más información, vea Eventos de enlace de datos de controles enlazados a datos más adelante.

El evento PreRender se produce para cada control de la página. Utilice el evento para realizar cambios finales en el contenido de la página o en sus controles.

SaveStateComplete Antes de que se produzca este evento, ViewState se ha guardado para la página y para todos los controles. Se omitirán todos los cambios que se realicen en este momento en la página o en los controles.

Utilice este evento para realizar tareas que requieran guardar el estado de vista, pero que no efectúen cambios en los controles.

Render Éste no es un evento; en esta fase del procesamiento, el objeto Page llama a este método en cada control. Todos los controles de servidor Web de ASP.NET tienen un método Render que escribe el marcado del control que se envía al explorador.

Si crea un control personalizado, normalmente reemplazará este método para generar el marcado del control. Sin embargo, si el control personalizado sólo incorpora controles de servidor Web de ASP.NET estándar y ningún marcado personalizado, no necesita reemplazar el método Render. Para obtener más información, consulteDesarrollar controles de servidor ASP.NET personalizados.

Un control de usuario (un archivo .ascx) incorpora automáticamente la representación, por lo que no necesita representar explícitamente el control en el código.

Unload Este evento se produce para cada control y después para la página. En los controles, utilice este evento para realizar tareas finales de limpieza en controles específicos, como cerrar las conexiones a bases de datos específicas del control.

Para la propia página, utilice este evento para hacer un último trabajo de limpieza, como cerrar archivos abiertos y conexiones a bases de datos, finalizar el registro u otras tareas específicas de la solicitud.

Nota
Durante la fase de descarga, la página y sus controles ya se han representado, por lo que no se podrán realizar más cambios en la secuencia de respuesta. Si intenta llamar a un método, como Response.Write, la página producirá una excepción.

Eventos adicionales

Ademas de lo que anteriormente acabamos de ver, es importante considerar que cada control en la página tiene su propio ciclo de vida, tales como Init, Load, Unload, etc… y se invocan de manera inversa si el control esta contenido dentro de otro, es decir, si tenemos un GridView y dentro de éste un TextBox, todos ellos poseen evento Init, así pues primero de disparará el evento Init del control mas interno antes de llegar al Load de su contenedor, en nuestro ejemplo sería el GridView, es decir de manera ascendente, caso contrario sucede con el evento Load que si sucede de manera descente.

Evento de enlace a datos

En algunos controles como el GridView tenemos adicional a los eventos que hemos visto eventos de enlace a datos tales como: DataBinding, RowDataBound, entre otros, a continuación veremos el ciclo de vida de estos eventos.

Evento de control Uso típico
DataBinding Este evento lo provocan los controles enlazados a datos antes del evento PreRender del control contenedor (o del objeto Page) e indica el comienzo del enlace del control a los datos.

Utilice este evento para abrir manualmente conexiones a bases de datos, si es necesario. (Esta operación suele ser innecesaria con los controles de origen de datos).

RowCreated (sólo GridView) o ItemCreated (controles DataList, DetailsView, SiteMapPath,DataGrid, FormView y Repeater) Utilice este evento para manipular contenido que no dependa del enlace de datos. Por ejemplo, en tiempo de ejecución, podría agregar formato mediante programación a una fila de encabezado o pie de página en un control GridView.
RowDataBound (sólo GridView) o ItemDataBound(controles DataListSiteMapPathDataGrid yRepeater) Cuando se produce este evento, los datos están disponibles en la fila o elemento, por lo que puede dar formato a los datos o establecer la propiedad FilterExpression de los controles de origen de datos secundarios para mostrar datos relacionados dentro de la fila o elemento.
DataBound Este evento marca el fin de las operaciones de enlace de datos en un control enlazado a datos. En un control GridView, el enlace de datos finaliza para todas las filas y todos los controles secundarios.

Utilice este evento para dar formato al contenido enlazado a datos o para iniciar el enlace de datos en otros controles que dependan de valores del contenido del control actual. (Para obtener información detallada, consulte “Poner eventos al día para controles agregados” anteriormente en este tema).

Bueno eso es todo por hoy, happy coding!!!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *