Ciclo di vita di un controllo web lato server
Il motore di ASP.NET carica (load) una pagina ogni volta che questa viene richiesta e la "scarica" (unload) quando la pagina viene chiusa.
All'interno della pagina, ogni controllo viene attivato a sua volta con e segue un proprio ciclo di vita, che porta dalla inizializzazione e gestione delle proprietà alla visualizzazione del codice HTML. Questo ciclo di vita è scandito dal succedersi di diverse fasi.
- Fase di inizializzazione - è la fase in cui vengono letti particolari settaggi che servono durante le fasi successive (come stringhe di connessione o variabili di applicazione). Questa fase è rappresentata dall'evento Init e dal relativo gestore OnInit.
- Caricamento del ViewState - è la fase in cui viene popolato il ViewState con le informazioni relative al controllo stesso, quindi i valori delle proprietà, lo stato … Questa fase viene eseguita dal metodo LoadViewState (che può essere sovrascritto in modo tale da personalizzare il salvataggio del ViewState).
- Elaborazione dei dati del postback - lettura dei dati proveniente da una ricaricamento della form e aggiornamento delle proprietà relative del controllo. Questa fase viene eseguita dal metodo LoadPostData.
- Caricamento - in questa fase il controllo viene caricato all'interno dell'oggetto Page che rappresenta la relativa pagina che lo contiene. Questa fase è rappresentata dall'evento Load o dal relativo gestore OnLoad.
- Notifica di cambiamenti nel postback - vengono scatenati gli eventi di aggiornamento in modo tale da segnalare le differenze tra un postback e l'altro. Questa fase viene eseguita dal metodo RaisePostDataChangedEvent.
- Gestione degli eventi di postback - gestione degli eventi che vengono scatenati lato client e relativo scatenamento degli appropriati eventi di postback. Fase eseguita dal metodo RaisePostBackEvent.
- Pre-Render - fase in cui effettuare gli ultimi aggiornamenti alle proprietà del controllo, prima che questo venga rende rizzato. Fase rappresentata dall'evento PreRender e dal relativo gestore OnPreRender.
- Salvataggio dello stato - fase in cui i valori di ogni singola proprietà del controllo vengono salvati all'interno del ViewState della pagina. Questa fase viene eseguita dal metodo SaveViewState.
- Render - fase in cui viene effettuato effettivamente il rendering del controllo all'utente. Fase, questa, rappresentata dall'omonimo evento Render.
- Dispose - fase in cui viene effettuata una pulizia delle risorse utilizzate dal controllo (in questa fase, per esempio, devono essere chiuse eventuali connessioni a database). Questa fase viene eseguita dal metodo Dispose.
- Scaricamento (unload) - ultima fase in cui possono essere liberate le risorse in uso dal controllo. Questa fase è rappresentata dall'evento UnLoad e dal relativo gestore OnUnLoad.
Lo sviluppatore può intervenire in ognuna di queste fasi nel corso dello sviluppo di controlli server personalizzati.