El ciclo de vida de los controles del servidor en ASP.Net
(1) Inicialización: en esta fase, se completan dos tareas principales: 1. Inicializar la configuración requerida durante el ciclo de vida de la solicitud web entrante; 2. Seguimiento del estado de la vista; Primero, el marco de la página genera el evento Init de forma predeterminada y llama al método OnInit(). Los desarrolladores del control pueden anular este método para proporcionar lógica de inicialización para el control. A partir de entonces, el marco de la página llamará al método TrackViewState para realizar un seguimiento del estado de la vista. Cabe señalar que en la mayoría de los casos, la implementación del método TrackViewState proporcionada por la clase base Control es suficiente. Es posible que los desarrolladores necesiten anular el método TrackViewState solo si el control define propiedades complejas.
(2) Cargando el estado de la vista: la tarea principal de esta etapa es verificar si el control del servidor ASP.NET existe y si es necesario restaurar su estado al estado en el que estaba al final de la vista. solicitud antes de procesarla. Por lo tanto, este proceso ocurre durante el proceso de devolución de datos de la página, no durante el proceso de solicitud inicial. En esta etapa, el marco de la página restaurará automáticamente el diccionario ViewState. Si el control del servidor no mantiene su estado, o tiene la capacidad de guardar todo su estado de forma predeterminada utilizando el diccionario ViewState, entonces el desarrollador no tiene que implementar ninguna lógica. Para los tipos de datos que no se pueden almacenar en el diccionario ViewState o donde se requiere una administración de estado personalizada, los desarrolladores pueden personalizar la recuperación y administración del estado anulando el método LoadViewState.
(3) Procesamiento de datos de devolución: si el control puede verificar los datos del formulario enviados por el cliente, se debe implementar el método LoadPostData() de la interfaz System.Web.UI.IPostBackDataHandler. Por lo tanto, en esta fase solo participan los controles que manejan datos de devolución.
(4) Carga: al comienzo de esta etapa, se creó e inicializó el control del servidor ASP.NET en el árbol de control, se restauró el estado y el control de formulario refleja los datos del cliente. En este punto, los desarrolladores pueden implementar la misma lógica para cada solicitud anulando el método OnLoad().
(5) Enviar notificación de cambio de devolución de datos: en esta etapa, el control del servidor ASP.NET sirve como señal al generar un evento para indicar el cambio de estado de control que ocurrió debido a la devolución de datos (por lo que esta etapa es solo utilizado para el proceso de devolución). Para establecer esta señal, el desarrollador debe volver a utilizar la interfaz System.Web.UI.IPostBackDataHandler e implementar otro método: RaisePostBackChangedEvent(). El proceso de juicio es: si el estado del control cambia debido a la devolución de datos, LoadPostData() devuelve verdadero; de lo contrario, devuelve falso; El marco de la página realiza un seguimiento de todos los controles que devuelven verdadero y llama a RaisePostDataChangedEvent() en esos controles.
(6) Procesamiento de eventos de devolución de datos: esta etapa procesa eventos del cliente que causan devoluciones de datos. Para facilitar el mapeo de eventos del cliente a eventos del lado del servidor para su procesamiento, los desarrolladores pueden implementar esta lógica en esta etapa implementando el método RaisePostBackEvent() de la interfaz System.Web.UI.IPostBackEventHandler. De esta manera, el control del servidor capturará con éxito el evento del cliente publicado y lo procesará en consecuencia en el lado del servidor.
(7) Pre-renderizado: esta etapa completa cualquier trabajo requerido antes de generar el control. Esto generalmente se hace anulando el método OnPreRender(). Nota: En esta etapa, los cambios realizados en el estado del control durante la etapa previa al renderizado se guardan, mientras que los cambios realizados durante la etapa de renderizado se pierden.
(8) Guardar estado: si el control del servidor ASP.NET no mantiene el estado, o tiene la capacidad de guardar todo su estado de forma predeterminada utilizando el diccionario ViewState, entonces el desarrollador no tiene que implementar ninguna lógica en esta etapa. Porque este proceso de guardar el estado es automático.
Si un control de servidor ASP.NET requiere guardar el estado personalizado, o el control no puede almacenar tipos de datos especiales en el diccionario ViewState, debe anular el método SaveViewState() para lograr guardar el estado.
(9) Presentación: Representa el proceso de escribir texto marcado en el flujo de salida HTTP. Los desarrolladores pueden personalizar el texto de marcado en el flujo de salida anulando el método Render().
(10) Eliminación: en esta etapa, la liberación de referencias a recursos costosos, como enlaces de bases de datos, etc., se completa anulando el método Dispose ().
(11) Descarga: el trabajo realizado es el mismo que el de la fase de "eliminación", pero los desarrolladores generalmente realizan la limpieza en el método Dispose() sin manejar el evento Unload.