venerdì 22 gennaio 2010

ViewState.... Questo Sconosciuto...

.. Semplicemente, un meccanismo utilizzato da ASP.Net per tenere traccia dello stato di un controllo, attraverso un campo nascosto nel Form. Attraverso questa soluzione, viene trasferito la gestione dello stato dei controlli dal Server al Client; solo quando il Client effettuerà il PostBack della pagina al Server, attraverso, il ViewState, verranno ripristinate tutte le impostazioni delle informazioni presenti nella pagina (il passaggio di valori tra Client e Server viene detto Server RoundTrip).

E ricordate: PostBack si intende il caricamento della stessa pagina in seguito all'esecuzione di un Form :-)

... and that's all, folks!

Ciclo di Vita di una pagina ASP.Net

Per un promemoria personale, ma per chi semplicemente volesse ricordalo. E' molto importante comprendere, per uno sviluppatore ASP.Net la comprensione del ciclo di vita di una pagina, soprattutto se bisogna cambiare proprietà alla pagina stessa oppure implementare metodi particolari.
Vado per acronimi, per ricodarmi più facilmente il ciclo di vita.

S - Start
I - Initialize
L - Load
V - Validate
E - Event Handling
R - Render

Vediamo brevemente cosa comporta ciascun evento:

S - START
In questo evento vengono impostate alcune proprietà come Request, Response, IsPostBack. Per intercettare questo evento, bisogna usare il metodo PreInit. In questo evento è possibile impostare una masterpage, il team della pagina o la creazione di controlli. E' importante ricordarsi che i valori dei controlli non sono stati ancora impostati dai valori del ViewState. Ciò comporta che se si cambia un valore in questa fase, è possibile subito dopo venga sovrascritto

I - Initialize
Questo evento viene scatenato dopo che i temi sono stati applicati e gli id dei controlli sono stati impostati. Microsoft ci suggerisce di utilizzare i metodi:
  • Init: scatenato dopo l'applicazione della skin. Utilizzare questo metodo per leggere o inizializzare le proprietà dei controlli;
  • InitComplete: scatenato dall'oggetto Page. Utilizzare questo evento per la trasformazione di tutti i compiti che richiedono che l'inizializzazione è completata
  • PreLoad: utilizzare questo evento se bisogna effettuare dei controlli o delle trasformazioni sulla pagina prima che venga caricata

L - Load
Utilizzata frequentemente. Qui vengono caricate le informazioni ricavate dal viewstate. Si possono impostare le proprietà di tutti i controlli e si possono stabilire connessioni al database

V - Validation
Se ci sono dei controlli che richiedono la validazione, viene scatenato questo evento ed è possibile controllare la proprietà IsValid del controllo

E - Event Handling
In questa fase vengono invocati gli eventi dei controlli server (Click, SelectedIndexChanged, ...). Gli eventi più usati sono:

  • LoadComplete: invocato quando tutti i controlli sono stati caricati;
  • PreRender: invocato per ogni controllo presente sulla pagina. Viene alla fine salvato il ViewState della pagina e di tutti i controlli
  • SaveStateComplete: viene invocato quando il ViewState è stato salvato

R - Render
Evento chiamato per ogni controllo presente nella pagina. Scrive il markup HTML del controllo per il browser

Metodi:

I seguenti metodi sono chiamati durante il ciclo di vita di una pagina Asp.Net:

  • PreInit
  • Init
  • InitComplete
  • PreLoad
  • Load
  • Contro (PostBack) event(s)
  • LoadComplete
  • PreRender
  • SaveStateComplete
  • Render
  • UnLoad

and that's all folks!