ASP.NET Web Forms – ViewState pflegen
ViewState basiert auf webform = „server“ im Web-Formular-Steuerelement-Attribut. Dieses Steuerelement wird mit einem versteckten _ViewState-Attribut verknüpft, das die Statuswerte aller Steuerelemente in ViewState speichert. In diesem Abschnitt erfahren Sie, wie ASP.NET ViewState verwaltet.
Durch die Beibehaltung des ViewState von Objekten in Ihrem Web Form können Sie sich viel Codierungsarbeit ersparen.
Im klassischen ASP werden beim Absenden eines Formulars alle Formularwerte gelöscht. Nehmen wir an, Sie senden ein Formular mit vielen Informationen und der Server gibt einen Fehler zurück. Sie müssen zum Formular zurückkehren, um die Informationen zu korrigieren. Sie klicken auf die Schaltfläche „Zurück“ und was passiert … alle Formularwerte werden gelöscht und Sie müssen alles von vorne beginnen! Die Site verwaltet Ihren ViewState nicht.
Wenn in ASP .NET ein Formular gesendet wird, wird das Formular zusammen mit den Formularwerten im Browserfenster angezeigt. Wie? Dies liegt daran, dass ASP .NET Ihren ViewState verwaltet. ViewState gibt den Status der Seite an, wenn sie an den Server übermittelt wird. Dieser Status wird definiert, indem auf jeder Seite ein ausgeblendetes Feld mit einem <form runat="server">-Steuerelement platziert wird. Der Quellcode lautet wie folgt:
<form name="_ctl0" method="post" action="page.aspx" id="_ctl0"><input type="hidden" name="__VIEWSTATE"value="dDwtNTI0ODU5MDE1Ozs+ZBCF2ryjMpeVgUrY2eTj79HNl4Q=" />... ..etwas Code</form>
Die Beibehaltung des ViewState ist die Standardeinstellung für ASP.NET Web Forms. Wenn Sie ViewState nicht beibehalten möchten, fügen Sie die Anweisung <%@ Page EnableViewState="false" %> oben auf der ASPX-Seite ein oder fügen Sie das Attribut EnableViewState="false" zu einem beliebigen Steuerelement hinzu.
Bitte sehen Sie sich die ASPX-Datei unten an. Es demonstriert die „alte“ Arbeitsweise. Wenn Sie auf die Schaltfläche „Senden“ klicken, verschwinden die Formularwerte:
<html><body><form action="demo_classicasp.aspx" method="post">Ihr Name: <input type="text" name="fname" size="20"><input type="submit" value ="Submit"></form><%dim fnamefname=Request.Form("fname")If fname<>"" ThenResponse.Write("Hello " & fname & "!")End Wenn%></body></html>
Hier ist der neue ASP .NET-Weg. Wenn Sie auf die Schaltfläche „Senden“ klicken, verschwinden die Formularwerte nicht:
Klicken Sie im rechten Rahmen der Instanz auf „Quelle anzeigen“ und Sie werden sehen, dass ASP.NET dem Formular ein ausgeblendetes Feld hinzugefügt hat, um ViewState beizubehalten.
<script runat="server">Sub subscribe(sender As Object, e As EventArgs)lbl1.Text="Hello " & txt1.Text & "!"End Sub</script><html><body><form runat= "server">Ihr 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>