ASP.NET ViewState

asp.net web forms - 維持 viewstate

通過(guò)在您的 web form 中維持對(duì)象的 viewstate(視圖狀態(tài)),您可以省去大量的編碼工作。

維持 viewstate(視圖狀態(tài))

在經(jīng)典 asp 中,當(dāng)一個(gè)表單被提交時(shí),所有的表單值都會(huì)被清空。假設(shè)您提交了一個(gè)帶有大量信息的表單,而服務(wù)器返回了一個(gè)錯(cuò)誤。您不得不回到表單改正信息。您點(diǎn)擊返回按鈕,然后發(fā)生了什么......所有表單值都被清空了,您不得不重新開始所有的一切!站點(diǎn)沒(méi)有維持您的 viewstate。

在 asp .net 中,當(dāng)一個(gè)表單被提交時(shí),表單會(huì)連同表單值一起出現(xiàn)在瀏覽器窗口中。如何做到的呢?這是因?yàn)?asp .net 維持了您的 viewstate。 viewstate 會(huì)在頁(yè)面被提交到服務(wù)器時(shí)表明它的狀態(tài)。這個(gè)狀態(tài)是通過(guò)在帶有 <form runat="server"> 控件的每個(gè)頁(yè)面上放置一個(gè)隱藏域定義的。源代碼如下所示:

<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 forms 的默認(rèn)設(shè)置。如果您想不維持 viewstate,請(qǐng)?jiān)?.aspx 頁(yè)面頂部包含指令 <%@ page enableviewstate="false" %> ,或者向任意控件添加屬性 enableviewstate="false" 。

請(qǐng)看下面的 .aspx 文件。它演示了"老"的運(yùn)行方式。當(dāng)您點(diǎn)擊提交按鈕,表單值將會(huì)消失:

實(shí)例

<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 方式。當(dāng)您點(diǎn)擊提交按鈕,表單值不會(huì)消失:

實(shí)例

點(diǎn)擊實(shí)例的右邊框架中的查看源代碼,您將看到 asp .net 已經(jīng)在表單中添加了一個(gè)隱藏域來(lái)維持 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>

相關(guān)文章
亚洲国产精品第一区二区,久久免费视频77,99V久久综合狠狠综合久久,国产免费久久九九免费视频