ASP.NET - Utrzymanie ViewState

Poprzez utrzymywanie stanu ViewState (stan widoku) obiektów w formularzu web, możesz zaoszczędzić mnóstwo kodu.

Utrzymanie ViewState (stan widoku)

Kiedy formularz w classic ASP jest wysyłany, wszystkie wartości formularza są czyszczone. Wyobraź sobie, że wysłałeś formularz z dużą ilością informacji, a serwer zwrócił błąd. Będziesz musiał wrócić do formularza i poprawić wprowadzone informacje. Klikniesz przycisk wstecz, a co się stanie... Wszystkie wartości formularza zostaną wyczyszczone, a będziesz musiał zacząć wszystko od początku. Strona nie utrzymuje stanu ViewState.

Kiedy formularz w ASP .NET jest wysyłany, formularz wraz ze wszystkimi wartościami formularza pojawia się ponownie. Jak to działa? To jest dzięki temu, że ASP .NET utrzymuje stan ViewState. ViewState wskazuje stan strony, gdy jest wysyłana do serwera. Umieszczając ukryty pola w kontrolerze <form runat="server"> na każdej stronie, możemy zdefiniować stan strony. Źródło kodu może wyglądać podobnie:

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

Utrzymanie ViewState jest domyślnym ustawieniem w ASP.NET Web Form. Jeśli nie chcesz utrzymywać ViewState, zawrzyj instrukcję na górze strony .aspx: <%@ Page EnableViewState="false" %> lub dodaj właściwość do dowolnego kontrolera: EnableViewState="false".

Proszę spojrzeć na poniższy plik .aspx. Wykazuje on stary sposób działania. Kiedy klikniesz przycisk zatwierdzenia, wartości formularza znikną:

<html>
<body>
<form action="demo_classicasp.aspx" method="post">
Twoje imię: <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>

Pokazuj ten przykład

To jest nowy sposób ASP .NET. Kiedy klikniesz przycisk wysyłania, wartości formularza nie znikną:

<script runat="server">
Sub submit(sender As Object, e As EventArgs)
lbl1.Text="Hello " & txt1.Text & "!"
End Sub
</script>
<html>
<body>
<form runat="server">
Twoje imię: <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>

Pokazuj ten przykład (Kliknij na ramce po prawej stronie, aby zobaczyć oryginalny dokument, gdzie ASP .NET dodał ukryty pola do formularza, aby utrzymać ViewState.)