ASP.NET - Pertahankan ViewState

Dengan mempertahankan status objek di dalam form Web, anda dapat mengurangkan banyak kerja pengodingan.

Pertahankan ViewState (Status Laman)

Apabila form di classic ASP disumbang, semua nilai form akan dipadamkan. Dengan fikirkan, anda menghantar form yang mempunyai banyak maklumat, dan pelayan mengembalikan ralat. Anda kembali ke form, dan apa yang akan berlaku... Semua nilai form akan dipadamkan, dan anda akan mesti mulai semuanya semula. Laman akan menghapuskan ViewState anda.

Apabila form di ASP .NET disumbang, form akan muncul semula bersama-sama dengan nilai form yang diisi. Bagaimana hal ini dilakukan? Ini disebabkan ASP .NET mempertahankan ViewState anda. ViewState akan menunjukkan status halaman apabila disumbang ke pelayan. Dengan meletakkan domain tersembunyi di dalam kontrol <form runat="server"> di setiap halaman, kita dapat menentukan status halaman. Kode asal mungkin seperti ini:

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

Pertahankan ViewState adalah pengaturan lalai ASP.NET Web Form. Jika anda tidak mahu pertahankan ViewState, tambahkan arahan di atas halaman .aspx: <%@ Page EnableViewState="false" %> atau tambahkan atribut: EnableViewState="false" kepada mana-mana kontrol.

Lihat fail .aspx di bawah ini. Ia menunjukkan cara lama berjalan. Apabila anda mengklik butang sumbit, nilai form akan hilang:

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

显示这个例子

这是新的 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">
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>

显示这个例子 (请在右边的框架中点击“查看原文档”,您可以看到 ASP .NET 已经向表单中添加了一个隐藏域,这样就可以维持 ViewState。)