Il ViewState è la tecnica utilizzata da ASP.NET per tenere traccia dello stato dei controlli presenti in una Web form, ad esempio il testo inserito in una casella oppure le CheckBox selezionate. Quando si esegue il submit di una form, i valori dei suoi controlli sono codificati all’interno di una stringa memorizzata in un campo nascosto chiamato __VIEWSTATE
.
Questo accorgimento si rende necessario perché HTTP è un protocollo stateless (senza stato), ovvero non mantiene informazioni sullo stato di una pagina tra una visita e l’altra. Con il ViewState, invece, è possibile trasferire lo stato dei controlli dal server al client e viceversa: in altre parole, il server, leggendo il ViewState di una pagina, è in grado di ripristinare, ad esempio, il valore corrente di tutti i campi di input, così come erano stati impostati sul client, senza bisogno che sia il programmatore a farlo via codice.
Il ViewState, inoltre, è organizzato come una tabella hash, quindi è possibile leggerne il contenuto oppure aggiungervi nuovi valori:
int nClicks = 0; if (ViewState["click"] == null) nClicks = 1; else nClicks = (int)ViewState["click"] + 1;
In questo caso, però, è importante ricordare che il ViewState è mantenuto solo quando sono eseguite richieste consecutive della stessa pagina: nel caso in cui venga caricata una nuova pagina, il ViewState sarà perso.