ASP.NET - Duy trì ViewState

Bằng cách duy trì trạng thái ViewState (trạng thái xem) của các đối tượng trong biểu mẫu web, bạn có thể tiết kiệm được rất nhiều công việc mã hóa.

Duy trì ViewState (trạng thái xem)

Khi biểu mẫu trong classic ASP được gửi, tất cả các giá trị biểu mẫu sẽ bị xóa sạch. Hãy tưởng tượng bạn đã gửi một biểu mẫu với rất nhiều thông tin, nhưng máy chủ trả về một lỗi. Bạn sẽ phải quay lại biểu mẫu và sửa chữa thông tin trong đó. Bạn nhấn nút quay lại, sau đó sẽ xảy ra điều gì... Tất cả các giá trị biểu mẫu sẽ bị xóa sạch và bạn sẽ phải bắt đầu lại từ đầu. Trang web sẽ không duy trì ViewState của bạn.

Khi biểu mẫu trong ASP.NET được gửi, biểu mẫu sẽ xuất hiện lại cùng với tất cả các giá trị biểu mẫu. Làm thế nào để làm điều đó? Điều này là do ASP.NET duy trì ViewState của bạn.ViewState sẽ chỉ ra trạng thái của trang khi nó được gửi lên máy chủ. Bằng cách đặt một trường ẩn trong một điều khiển <form runat="server"> trên mỗi trang, chúng ta có thể định nghĩa trạng thái của trang. Mã nguồn có thể类似于 như sau:

<form name="_ctl0" method="post" action="page.aspx" id="_ctl0">
<input type="hidden" name="__VIEWSTATE"
value="dDwtNTI0ODU5MDE1Ozs+ZBCF2ryjMpeVgUrY2eTj79HNl4Q=" />
.....mã nguồn
</form>

Việc duy trì ViewState là thiết lập mặc định của ASP.NET Web biểu mẫu. Nếu bạn không muốn duy trì ViewState, hãy bao gồm lệnh chỉ định ở đầu tệp .aspx: <%@ Page EnableViewState="false" %> hoặc thêm thuộc tính: EnableViewState="false" cho bất kỳ điều khiển nào.

Xin xem tệp .aspx bên dưới. Nó演示 cách hoạt động của phiên bản cũ. Khi bạn nhấn nút Gửi, giá trị biểu mẫu sẽ biến mất:

<html>
<body>
<form action="demo_classicasp.aspx" method="post">
Tên của bạn: <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>

Hiển thị ví dụ này

Đây là phương thức mới của ASP .NET. Khi bạn nhấp vào nút submit, giá trị biểu mẫu sẽ không bị mất:

<script runat="server">
Sub submit(sender As Object, e As EventArgs)
lbl1.Text="Hello " & txt1.Text & "!"
End Sub
</script>
<html>
<body>
<form runat="server">
Tên của bạn: <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>

Hiển thị ví dụ này (Vui lòng nhấp vào "Xem tài liệu gốc" ở khung bên phải, bạn sẽ thấy ASP .NET đã thêm một trường ẩn vào biểu mẫu, để duy trì ViewState.)