Información general sobre el ciclo de vida de una página ASP.NET

Actualización: noviembre 2007

Cuando se ejecuta una página ASP.NET, ésta recorre un ciclo de vida en el que realiza una serie de pasos de procesamiento. Entre ellos se incluyen la inicialización, la creación de instancias de controles, la restauración y el mantenimiento del estado, la ejecución del código del controlador de eventos y la representación. Es importante que comprenda el ciclo de vida de la página para que pueda escribir código en la fase del ciclo de vida apropiada y conseguir el efecto deseado. Además, si crea controles personalizados, debe estar familiarizado con el ciclo de vida de la página para poder inicializarlos, asignar datos de estado de vista a las propiedades de los controles y ejecutar la lógica de comportamiento de éstos correctamente. (El ciclo de vida de un control está basado en el ciclo de vida de la página, pero ésta produce en un control más eventos de los que están disponibles para la página ASP.NET por sí sola.)

Fases generales del ciclo de vida de la página

En términos generales, la página recorre las fases descritas en la tabla siguiente. Además de las fases del ciclo de vida de la página, existen las fases de la aplicación que se producen antes y después de una solicitud, pero no son específicas de una página. Para obtener más información, vea Información general sobre el ciclo de vida de una aplicación ASP.NET para IIS 5.0 y 6.0.

Fase

Descripción

Solicitud de página

La solicitud de página se produce antes de que comience el ciclo de vida de la página. Cuando un usuario solicita la página, ASP.NET determina si ésta se debe analizar y compilar (a fin de que comience el ciclo de vida de la página) o si se puede enviar una versión en caché de la página como respuesta sin ejecutar la página.

Inicio

En el paso de inicio, se establecen las propiedades de la página, como Request y Response. En esta fase, la página también determina si la solicitud es una devolución de datos o una nueva solicitud, y establece la propiedad IsPostBack. Además, durante esta fase se establece la propiedad UICulture de la página.

Inicialización de página

Durante la inicialización de la página, los controles incluidos en ella están disponibles y se establece la propiedad UniqueID de cada uno de ellos. Además, se aplican los temas correspondientes a la página. Si la solicitud actual es una devolución de datos, los datos de devolución aún no se han cargado y los valores de las propiedades del control no se han restaurado a los valores del estado de vista.

Carga

Durante la carga, si la solicitud actual es una devolución de datos, las propiedades del control se cargan con información recuperada del estado de vista y del estado del control.

Validación

Durante la validación, se llama al método Validate de todos los controles de validación, que establece la propiedad IsValid de cada uno de los controles de validación y de la página.

Control de eventos de devolución de datos

Si la solicitud es una devolución de datos, se llama a los controladores de eventos.

Representación

Durante la representación, el estado de vista se guarda en la página y, a continuación, ésta llama a cada uno de los controles para que aporte su salida representada al valor OutputStream de la propiedad Response de la página.

Descarga

Se llama a la descarga cuando la página se ha representado completamente, se ha enviado al cliente y está lista para ser descartada. Llegado este momento, se descargan las propiedades de la página, como Response y Request, y se llevan a cabo las operaciones de limpieza correspondientes.

Eventos del ciclo de vida

Dentro de cada fase del ciclo de vida de una página, ésta produce eventos que puede controlar para ejecutar su propio código. En los eventos de control, el controlador de sucesos se debe enlazar al evento, bien mediante declaración utilizando atributos como onclick o bien en el código.

Las páginas también admiten la conexión automática de eventos, lo que significa que ASP.NET busca métodos con nombres determinados y los ejecuta automáticamente cuando se producen ciertos eventos. Si el atributo AutoEventWireup de la directiva @ Page se establece en true (o si no está definido, ya que de forma predeterminada es true), los eventos de página se enlazan de forma automática a los métodos que utilizan la convención de nomenclatura Page_event, por ejemplo Page_Load y Page_Init. Para obtener más información sobre la conexión automática de eventos, vea Modelo de eventos de control de servidor Web ASP.NET.

En la tabla siguiente se muestran los eventos del ciclo de vida de la página que se utilizan con más frecuencia. Hay más eventos que los mostrados. Sin embargo, no se utilizan en la mayoría de los escenarios de procesamiento de páginas. Los utilizan fundamentalmente los controles de servidor de la página Web ASP.NET para sus propias tareas de inicialización y representación. Si desea escribir sus propios controles de servidor ASP.NET, necesitará saber más sobre estas fases. Para obtener información sobre la creación de controles personalizados, vea Desarrollar controles de servidor ASP.NET personalizados.

Evento de página

Uso típico

Page_PreInit

  • Utilice la propiedad IsPostBack para determinar si ésta 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 la fase siguiente.

Page_Init

  • Leer o inicializar las propiedades de los controles.

Page_Load

  • Leer y actualizar las propiedades de los controles.

Control events

Realizar el procesamiento específico de la aplicación:

  • Si la página contiene controles de validación, compruebe la propiedad IsValid de la página y de cada uno de los controles de validación antes de realizar cualquier procesamiento.

  • Controlar un evento específico; por ejemplo, para el control Button, el evento Click.

Page_PreRender

  • Realizar los cambios finales en el contenido de la página.

Page_Unload

Llevar a cabo el trabajo de limpieza final, que podría incluir:

  • El cierre de los archivos abiertos y de las conexiones a bases de datos.

  • La finalización del registro o de otras tareas específicas de cada 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.

Consideraciones adicionales sobre el ciclo de vida de la página

Tenga en cuenta la siguiente información adicional sobre el ciclo de vida de la página:

  • Cada uno de los controles de servidor ASP.NET tiene su propio ciclo de vida, que es similar al ciclo de vida de la página. Por ejemplo, se llama a los métodos Init y Load de un control durante los eventos de página correspondientes. Si ha incluido un control en la página, se llamará primero al método Init de dicho control, seguido por el método Init de la página. Sin embargo, se llamará antes al método Load de la página que al método Load del control.

  • Para personalizar la apariencia o el contenido de un control, deberá controlar sus eventos. Por ejemplo, todos los controles producen eventos Init, Load y Unload, aunque no es común que los desarrolladores de páginas controlen dichos eventos. Es más frecuente controlar los eventos específicos del control, como el evento Click del control Button y el evento SelectedIndexChanged del control ListBox. En determinadas circunstancias, también se pueden controlar los eventos DataBinding o DataBound de un control. Para obtener más información, vea los temas de referencia de las clases de cada control y Desarrollar controles de servidor ASP.NET personalizados.

  • Además de controlar los eventos producidos por la página, también puede reemplazar los métodos de la clase base de la página. Por ejemplo, puede reemplazar el método InitializeCulture de la página para establecer dinámicamente una referencia cultural. Tenga en cuenta que cuando se crea un controlador de eventos con la sintaxis Page_event, se llama a la implementación base de forma implícita y, por consiguiente, no es necesario llamarla de nuevo en el método. Por ejemplo, siempre se llama al método OnLoad de la clase de la página base, tanto si se crea un método Page_Load como si no. Sin embargo, si reemplaza el método OnLoad de la página por la palabra clave override (Overrides en Visual Basic), deberá llamar de forma explícita al método base. Por ejemplo, si reemplaza el método OnLoad de la página, deberá llamar a base.Load (MyBase.Load en Visual Basic) para poder ejecutar la implementación base.

Vea también

Conceptos

Contexto de página y aplicación en aplicaciones Web ASP.NET

Referencia

Validar la información especificada por el usuario en páginas Web ASP.NET

Otros recursos

Sintaxis de páginas de ASP.NET

Información general sobre el estado de vista

Control de eventos del servidor en páginas Web ASP.NET