最新的Web開發教程
 

ASP.NET Web窗體 - 維持ViewState


您可以通過保持物體的ViewState在Web窗體節省了大量的編碼。


維持ViewState

當一個表單在傳統的ASP提交,所有的表單值都會被清空。 假設你已經提交形式大量的信息和服務器返回一個錯誤。 你將不得不回去的形式和更正信息。 單擊後退按鈕,會發生什麼.......所有的表單值都會被清空,你將不得不從頭再來! 該網站並沒有維持你的ViewState。

當一種形式,ASP .NET被提交,該形式在瀏覽器窗口連同所有表單值再次出現。 怎麼來的? 這是因為ASP .NET維持你的瀏覽狀態。 ViewState的指示何時提交到服務器頁面的狀態。 狀態是通過設置在每個頁面上以<形式RUNAT =“server”>控件隱藏字段定義。 來源可能是這個樣子:

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

.....some code

</form>

維持ViewState是ASP.NET Web窗體的默認設置。 如果你想不維護ViewState中,包括指令<%@頁的EnableViewState =“假”%>在一個.aspx頁面的頂部或屬性的EnableViewState =“假”添加到任何控制。

請看下面的.aspx文件。 它體現了"old"的方式來做到這一點。 當你點擊提交按鈕,表單值就會消失:

<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方式。 當你點擊提交按鈕,表單值不會消失:

點擊的例子的右視圖幀源地看到,ASP .NET又增加了一個隱藏字段的形式來維持的ViewState

<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>
顯示範例»