ASP.NET - Behouden van de ViewState

Door de ViewState (weergavestatus) van objecten in webformulieren te behouden, kunt u veel codewerk besparen.

Behouden van de ViewState (weergavestatus)

Wanneer een formulier in classic ASP wordt ingediend, worden alle formulierwaarden leeggeveegd. Stel u voor dat u een formulier met veel informatie hebt ingediend en de server geeft een fout terug. U moet terugkeren naar het formulier en de informatie corrigeren. U klikt op de teruggaande knop, en dan gebeurt er wat... Alle formulierwaarden worden leeggeveegd en u moet alles opnieuw beginnen. De site behoudt uw ViewState niet.

Wanneer een formulier in ASP.NET wordt ingediend, verschijnt het formulier samen met alle formulierwaarden opnieuw. Hoe doet het dat? Dit komt doordat ASP.NET deViewState behoudt.ViewState geeft aan welke status de pagina heeft wanneer deze naar de server wordt ingediend. Door een verborgen veld te plaatsen in een <form runat="server">-controle op elke pagina, kunnen we de status van de pagina definiëren. De broncode kan er zo uitzien:

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

Het behouden van de ViewState is de standaardinstelling van ASP.NET Web formulieren. Als u het niet wilt behouden, voeg dan het instructie in de top van de .aspx-pagina toe: <%@ Page EnableViewState="false" %> of voeg een eigenschap toe aan elke controle: EnableViewState="false".

Kijk onderstaand .aspx-bestand. Het demonstreert de oude manier van werken. Wanneer u op de knop 'Indienen' klikt, verdwijnen de formulierwaarden:

<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>

Show this example

This is the new ASP .NET way. When you click the submit button, the form values will not disappear:

<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>

Show this example (Click 'View Original Document' in the right frame to see that ASP .NET has added a hidden field to the form, thus maintaining the ViewState.)