ASP.NET - Mantenere il ViewState

Mantenendo lo stato di visualizzazione (ViewState) degli oggetti nei moduli Web, si può risparmiare molto codice.

Mantenere il ViewState (stato di visualizzazione)

Quando un modulo classic ASP viene inviato, tutti i valori del modulo vengono cancellati. Immaginate di aver inviato un modulo con molte informazioni, e il server ha restituito un errore. Dovrete tornare al modulo e correggere le informazioni. Cliccate sul pulsante Indietro, e cosa succede... Tutti i valori del modulo vengono cancellati e dovrete ricominciare tutto da capo. Il sito non mantiene il tuo ViewState.

Quando un modulo ASP.NET viene inviato, il modulo riappare con tutti i valori del modulo. Come fa? È grazie al mantenimento del ViewState di ASP.NET. Il ViewState indica lo stato della pagina quando viene inviata al server. Ponendo un campo nascosto in un controllo <form runat="server"> in ogni pagina, possiamo definire lo stato della pagina. Il codice sorgente potrebbe essere simile a questo:

<form name="_ctl0" method="post" action="page.aspx" id="_ctl0">
<input type="hidden" name="__VIEWSTATE"
value="dDwtNTI0ODU5MDE1Ozs+ZBCF2ryjMpeVgUrY2eTj79HNl4Q=" />
.....alcun codice
</form>

Mantenere il ViewState è la configurazione predefinita di ASP.NET Web Form. Se non si desidera mantenere il ViewState, includere l'instruzione nella parte superiore della pagina .aspx: <%@ Page EnableViewState="false" %> o aggiungere l'attributo a qualsiasi controllo: EnableViewState="false".

Ecco il file .aspx sottostante. Dimostra il vecchio modo di funzionare. Quando si clicca sul pulsante Invia, i valori del modulo scompaiono:

<html>
<body>
<form action="demo_classicasp.aspx" method="post">
Il tuo nome: <input type="text" name="fname" size="20">
<input type="submit" value="Submit">
</form>
<%
dim fname
fname=Request.Form("fname")
Se fname<>"" allora
Response.Write("Hello " & fname & "!")
Fine If
%>
</body>
</html>

Mostra questo esempio

Questo è il nuovo metodo ASP .NET. Quando fai clic sul pulsante di invio, i valori del modulo non scompaiono:

<script runat="server">
Sub submit(sender As Object, e As EventArgs)
lbl1.Text="Hello " & txt1.Text & "!"
Fine Sub
</script>
<html>
<body>
<form runat="server">
Il tuo nome: <asp:TextBox id="txt1" runat="server" />
<asp:Button OnClick="submit" Text="Submit" runat="server" />
<p><asp:Label id="lbl1" runat="server" /></p>
</form>
</body>
</html>

Mostra questo esempio (Fare clic su "Visualizza documento originale" nella finestra di destra, dove si può vedere che ASP .NET ha aggiunto un campo nascosto al modulo per mantenere il ViewState.)