Come utilizzare il ViewState
Data di pubblicazione: 29/09/2003
Voto della community: 3,43
(Votanti: 7)
Il ViewState rappresenta una soluzione per scrivere meno codice all'interno dei Form, in questo articolo scopriamo i vantaggi del suo utilizzo.
Il ViewState è la tecnica utilizzata da ASP.NET per tenere traccia, attraverso un campo nascosto nel Form, dello stato di un controllo: quando una pagina ed il relativo Form vengono eseguiti, i valori di tutti i controlli sono codificati all’interno un’unica stringa memorizzata in un campo nascosto chiamato “__VIEWSTATE”. Questa soluzione consente di trasferire 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). Esempio di ViewState: <input type="hidden" name="__VIEWSTATE" value="dDwxNDg5OTk5MzM7Oz7DblWpxMjE3ATl4Jx621QnCmJ2VQ==" />
Tutte le pagine ASP.NET sono un’istanza della classe Page, dalla quale vengono ereditati molti eventi, il più utilizzato è l’evento Page_Load, che si verifica ad ogni caricamento della pagina; per PostBack si intende il caricamento della stessa pagina in seguito all’esecuzione di un Form. All’interno del Page_Load è possibile quindi verificare se è stato effettuato il primo accesso alla pagina, utilizzando la proprietà: page.isPostBack
La proprietà IsPostBack dell’oggetto Page, restituisce il valore "true" solo quando il Form presente nella pagina è stato eseguito e "false" quando si tratta del primo accesso alla pagina. Il Postback consente quindi di simulare il concetto di stato dei campi presenti in un Form. Possiamo quindi descrivere meglio il ViewState come il meccanismo in base al quale lo stato di una pagina viene memorizzato durante la fase di PostBack; lo stato è mantenuto solo se vengono eseguite richieste consecutive della stessa pagina, nel caso in cui venga caricata una nuova pagina il ViewState verrà perso. L’unico svantaggio nell’utilizzo del ViewState è dato dalla dimensione della pagina, che cresce notevolmente al crescere del numero di controlli presenti nel Form. Per default il ViewState viene attivato in tutte le pagine, ma è possibile disattivarlo impostando la proprietà EnableViewState di ogni singolo controllo a "false", oppure disabilitando la gestione direttamente su tutta la pagina o a livello di applicazione. E’ possibile disabilitare il ViewState:
ASP.NET consente di salvare direttamente un valore nel ViewState, utilizzando: ViewState(key) = value
oppure leggere un valore salvato:
Value = ViewState(key)
In molti casi il ViewState potrà sostituire le vecchie Session( ), ma esistono ancora alcune situazioni in cui le variabili di Sessioni risultano essenziali:
A prova di alterazione: viene utilizzato un codice hash che consente di ridurre le probabilità di spoofing sull’applicazione. Impostazione dell’attributo EnableViewStateMAC nella pagina: <%@Page EnableViewStateMAC=true %>
Crittografica: tutte le informazioni vengono crittografate utilizzando l’algoritmo simmetrico Triple DES. Impostazione dell’attributo EnableViewStateMAC nella pagina: <%@Page EnableViewStateMAC=true %>
Impostazione del tipo di convalida machineKey a 3DES nel machine.config:
<machineKey validation="3DES" />
In ogni caso è importante ricordare che, maggiore sarà il livello di protezione adottato, maggiore sarà il tempo di elaborazione della pagina quindi, anche in questo caso, è necessario utilizzare il ViewState con la dovuta cautela, ponderando sempre ogni singola scelta.
Approfondimenti
Esempio sull'utilizzo della proprietà IsPostBack all'interno del Page_Load:
<%@Page Language="VB"%> ![]() ![]()
|
||||||||||||||||||||||||