Si può risparmiare un sacco di codifica mantenendo il ViewState degli oggetti nel Web Form.
Mantenere il ViewState
Quando un modulo viene inviato in ASP classico, tutti i valori del modulo vengono cancellati. Supponiamo di aver inviato un modulo con un sacco di informazioni e il server ritorna con un errore. Si dovrà tornare alla forma e correggere le informazioni. Si fa clic sul pulsante Indietro, e cosa succede ....... TUTTI i valori di forma vengono cancellati, e si dovrà ricominciare tutto da capo! Il sito non ha mantenuto la tua ViewState.
Quando un modulo viene inviato in ASP .NET, la forma riappare nella finestra del browser insieme a tutti i valori di forma. Come mai? Questo perché ASP .NET mantiene la ViewState. Il ViewState indica lo stato della pagina quando viene sottoposto al server. Lo stato viene definito attraverso un campo nascosto posto su ogni pagina con un <runat = "server" form> di controllo. La fonte potrebbe essere simile a questa:
<form name="_ctl0" method="post" action="page.aspx" id="_ctl0">
<input type="hidden" name="__VIEWSTATE"
value="dDwtNTI0ODU5MDE1Ozs+ZBCF2ryjMpeVgUrY2eTj79HNl4Q=" />
.....some code
</form>
Mantenere il ViewState è l'impostazione predefinita per ASP.NET Web Forms. Se si vuole mantenere la NON ViewState, includere la direttiva <% @ Page EnableViewState = "false" %> nella parte superiore di una pagina aspx o aggiungere l'attributo EnableViewState = "false" a qualsiasi controllo.
Guardate il seguente file aspx. Dimostra il "old" modo per farlo. Quando si fa clic sul pulsante di invio, il valore modulo scomparirà:
Esempio
<html>
<body>
<form action="demo_classicasp.aspx" method="post">
Your name: <input type="text" name="fname" size="20">
<input type="submit" value="Submit">
</form>
<%
dim fname
fname=Request.Form("fname")
If fname<>"" Then
Response.Write("Hello " & fname & "!")
End If
%>
</body>
</html>
Visualizza l'esempio » Ecco il nuovo modo ASP .NET. Quando si fa clic sul pulsante di invio, il valore modulo non scomparirà:
Esempio
Clicca vista origine nel giusto stato d'esempio per vedere che ASP .NET ha aggiunto un campo nascosto nella forma di mantenere il ViewState
<script runat="server">
Sub submit(sender As Object, e As EventArgs)
lbl1.Text="Hello " & txt1.Text & "!"
End Sub
</script>
<html>
<body>
<form runat="server">
Your name: <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>
Visualizza l'esempio »