hiddenfield控件顧名思義就是隱藏輸入框的服務(wù)器控件,它能讓你保存那些不需要顯示在頁(yè)面上的且對(duì)安全性要求不高的數(shù)據(jù)。也許這個(gè)時(shí)候應(yīng)該有這么一個(gè)疑問(wèn),為什么有了viewstate、session和cookie等狀態(tài)保存機(jī)制,還需要“返回老套”用起hiddenfield呢?增加hiddenfield,其實(shí)是為了讓整個(gè)狀態(tài)管理機(jī)制的應(yīng)用程度更加全面。因?yàn)椴还苁莢iewstate、session還是cookie,都有其失效的時(shí)候(比如用戶(hù)因某種需求要求設(shè)置viewstate為false,或者環(huán)境條件限制使用session或cookie等等),那這個(gè)時(shí)候hiddenfield無(wú)疑是最佳選擇,也說(shuō)明了簡(jiǎn)單實(shí)用的東西永遠(yuǎn)不會(huì)過(guò)期的道理。
說(shuō)到這里,聯(lián)想起前面的bulletedlist控件的產(chǎn)生理由,竟然也有異曲同工之處。我想,它們雖然都是“不起眼”的控件,但是它們的再次出現(xiàn)帶給我們的思考和意義遠(yuǎn)遠(yuǎn)比它們的技術(shù)應(yīng)用帶給我們的多得多。扔掉“小看”任何東西的眼鏡,你都會(huì)發(fā)現(xiàn)它值得夸耀的一面。
hiddenfield控件的主要成員有value屬性和valuechanged事件:
l value:保存在隱藏輸入框中的值。
l valuechanged:在value值發(fā)生改變時(shí)觸發(fā)該事件。不過(guò)在我的調(diào)試過(guò)程中,發(fā)現(xiàn)還應(yīng)該再設(shè)置hiddenfield控件的enableviewstate屬性為false方可,默認(rèn)為true的情況下將視value值沒(méi)有發(fā)生改變,從而無(wú)法觸發(fā)該事件。
簡(jiǎn)單示例:default.aspx
<%@ page language="c#" %>
<!doctype html public "-//w3c//dtd xhtml 1.1//en" "http://www.w3.org/tr/xhtml11/dtd/xhtml11.dtd">
<script runat="server">
protected void page_load(object sender, eventargs e)
{
if (hiddenfield1.value == string.empty)
hiddenfield1.value = "0";
}
protected void button1_click(object sender, eventargs e)
{
hiddenfield1.value = (convert.toint32(hiddenfield1.value) + 1).tostring();
label1.text = hiddenfield1.value;
}
protected void hiddenfield1_valuechanged(object sender, eventargs e)
{
response.write("changed." + datetime.now.tostring());
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>untitled page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:hiddenfield id="hiddenfield1" runat="server" onvaluechanged="hiddenfield1_valuechanged" enableviewstate="false" />
</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>
[總結(jié)]:誠(chéng)如前面所說(shuō),hiddenfield雖然是個(gè)“不起眼”的控件,但是它的再次出現(xiàn)帶給我們的思考和意義遠(yuǎn)遠(yuǎn)比它的技術(shù)應(yīng)用帶給我們的多得多。
[參考資料]:
1. msdn library for visual studio 2005 beta2
2. http://beta.asp.net/quickstart/aspnet/default.aspx
| 
 
 | 
新聞熱點(diǎn)
疑難解答
圖片精選