ASP.NET - ΔιατήρησηViewState

Με τη διατήρηση τουViewState (σύσταση οθόνης) των αντικειμένων στη φόρμα του Web, μπορείτε να αποφύγετε μεγάλο μέρος της κώδικα.

ΔιατήρησηViewState (σύσταση οθόνης)

Όταν η φόρμα της classic ASP υποβάλλεται, όλες οι τιμές της φόρμας θα καθαριστούν. Ας φανταστούμε ότι υποβάλλετε μια φόρμα με πολλά δεδομένα και ο διακομιστής επιστρέφει ένα σφάλμα. Θα πρέπει να επιστρέψετε στη φόρμα και να διορθώσετε τις πληροφορίες. Κάνετε κλικ στο κουμπί πίσω και τότε τι θα συμβεί... Όλες οι τιμές της φόρμας θα καθαριστούν και θα πρέπει να ξεκινήσετε ξανά από το μηδέν. Ο ιστότοπος δεν διατηρεί το ViewState σας.

Όταν η φόρμα της ASP .NET υποβάλλεται, η φόρμα εμφανίζεται ξανά με όλες τις τιμές της φόρμας. Πώς γίνεται αυτό; Είναι επειδή η ASP .NET διατηρεί το ViewState σας. Το ViewState καθορίζει την κατάσταση της σελίδας όταν υποβάλλεται στο διακομιστή. Με την τοποθέτηση ενός κρυπτού πεδίου <form runat="server"> σε κάθε σελίδα, μπορούμε να καθορίσουμε την κατάσταση της σελίδας. Ο κώδικας πηγής μπορεί να μοιάζει με αυτό:

<form name="_ctl0" method="post" action="page.aspx" id="_ctl0">
<input type="hidden" name="__VIEWSTATE"
value="dDwtNTI0ODU5MDE1Ozs+ZBCF2ryjMpeVgUrY2eTj79HNl4Q=" />
.....κάποιο κώδικας
</form>

Η διατήρηση του ViewState είναι η προεπιλεγμένη ρύθμιση για τις ASP.NET Web φόρμες. Αν δεν θέλετε να διατηρήσετε το ViewState, περιλαμβάνετε την οδηγία στο κεφάλι της σελίδας .aspx: <%@ Page EnableViewState="false" %> ή προσθέστε την ιδιότητα σε οποιοδήποτε έλεγχο: EnableViewState="false".

Παρακαλώ δείτε το παρακάτω αρχείο .aspx. Εμφανίζει τον παλιό τρόπο λειτουργίας. Όταν κάνετε κλικ στο κουμπί υποβολής, οι τιμές της φόρμας θα εξαφανιστούν:

<html>
<body>
<form action="demo_classicasp.aspx" method="post">
Το όνομά σας: <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>

Εμφάνιση Αυτού του Παραδείγματος

Αυτό είναι ο νέος τρόπος ASP .NET. Όταν κάνετε κλικ στο κουμπί υποβολής, οι τιμές του φόρμα δεν θα εξαφανιστούν:

<script runat="server">
Sub submit(sender As Object, e As EventArgs)
lbl1.Text="Hello " & txt1.Text & "!"
End Sub
</script>
<html>
<body>
<form runat="server">
Το όνομά σας: <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>

Εμφάνιση Αυτού του Παραδείγματος Παρακαλώ κάντε κλικ στο κουτί στα δεξιά για να δείτε το αρχικό έγγραφο, όπου μπορείτε να δείτε ότι το ASP .NET έχει προσθέσει μια κρυφή στήλη στο φόρμα, ώστε να διατηρηθεί ο ViewState.