增加hiddenfield,其實是為了讓整個狀態(tài)管理機制的應(yīng)用程度更加全面。因為不管是viewstate、cookie還是session,都有其失效的時候,比如用戶因某種需求要求設(shè)置viewstate為false,或者環(huán)境條件限制使用cookie,或者用戶長時間沒有動作導致session過期等等,那這個時候hiddenfield無疑是最佳選擇。
hiddenfield控件的作用簡單的說是用于存儲需要在向服務(wù)器的發(fā)送間保持的值。它作為 <input type= "hidden"/> 元素呈現(xiàn),并且通過添加runat=”server”就可以使它成為標準的html服務(wù)器控件。下面列出的是asp.net hiddenfield web服務(wù)器控件可以使用的屬性和事件。
| <asp:hiddenfield enabletheming="true|false" enableviewstate="true|false" id="string" ondatabinding="databinding event handler" ondisposed="disposed event handler" oninit="init event handler" onload="load event handler" onprerender="prerender event handler" onunload="unload event handler" onvaluechanged="valuechanged event handler" runat="server" skinid="string" value="string" visible="true|false" /> | 
| <html> <head> <script language="c#" runat="server"> void button1_click(object sender, eventargs e) { if (hiddenfield1.value == string.empty) hiddenfield1.value = "0"; hiddenfield1.value = (convert.toint32(hiddenfield1.value)+1).tostring(); label1.text = hiddenfield1.value; } </script> </head> <body> <h3><font face="verdana">hiddenfield</font></h3> <form runat=server> <asp:hiddenfield id=hiddenfield1 runat=server /> <asp:button id=button1 text="單擊按鈕" runat="server" /> 單擊 <asp:label id=label1 text="0" runat=server /> 次 </form> </body> </html> | 
| <form name="form1" method="post" action="default.aspx" id="form1"> | 
hiddenfield事件
hiddenfield較為常用的是valuechanged事件,該事件在value值發(fā)生改變時觸發(fā)該事件。然而在實際使用時,要知道頁面記載順序。在頁面回傳過程中,具體的頁面周期你可以到如下網(wǎng)站查看 
http://msdn2.microsoft.com/zh-cn/library/ms178472.aspx 
  下面的例子說明了這個問題 
| <head> <script runat="server" language="c#"> protected void page_load(object sender, eventargs e) { response.write("<p>頁面的page_load事件觸發(fā),觸發(fā)時間是:" + datetime.now.tostring()); if (hiddenfield1.value == string.empty) hiddenfield1.value = "0"; } protected void button1_click(object sender, eventargs e) { response.write("<p>button1_click為改變hidden的值前事件觸發(fā),觸發(fā)時間是:" + datetime.now.tostring()); hiddenfield1.value = (convert.toint32(hiddenfield1.value) + 1).tostring(); label1.text = hiddenfield1.value; } protected void hiddenfield1_valuechanged(object sender, eventargs e) { response.write("<p>hiddenfield的 valuechanged事件觸發(fā),觸發(fā)時間是:" + datetime.now.tostring()); } </script> </head> <body> <form id="form1" runat="server"> <div> <asp:hiddenfield id="hiddenfield1" runat="server" onvaluechanged="hiddenfield1_valuechanged" /> </div> <asp:label id="label1" runat="server" text="label"></asp:label> <br /> <asp:button id="button1" runat="server" onclick="button1_click" text="button" /> </form></body> </html> | 
| <%@ page enableviewstate="false" %> <head> <script runat="server" language="c#"> protected void page_load(object sender, eventargs e) { if (hiddenfield1.value == string.empty) hiddenfield1.value = "111"; } protected void button1_click(object sender, eventargs e) { // hiddenfield1.value = (convert.toint32(hiddenfield1.value) + 1).tostring(); label1.text = textbox1.text; } protected void hiddenfield1_valuechanged(object sender, eventargs e) { response.write("changed." + datetime.now.tostring()); response.write(hiddenfield1.value); response.write(textbox1.text); } </script> </head> <body> <form id="form1" runat="server"> <div> <asp:hiddenfield id="hiddenfield1" runat="server" onvaluechanged="hiddenfield1_valuechanged" /> </div> <asp:label id="label1" runat="server" text="label"></asp:label> <br /> <asp:textbox runat=server id=textbox1></asp:textbox> <asp:button id="button1" runat="server" onclick="button1_click" text="button" /> </form> </body> </html> | 
新聞熱點
疑難解答
圖片精選