HiddenField控件的作用簡單的說是用于存儲需要在向服務器的發(fā)送間保持的值。它作為 input type= "hidden"/> 元素呈現(xiàn),并且通過添加runat=”server”就可以使它成為標準的HTML服務器控件。下面列出的是ASP.NET HiddenField Web服務器控件可以使用的屬性和事件。
復制代碼 代碼如下:
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"
/>
因為 HiddenField 的值將呈現(xiàn)給客戶端瀏覽器,所以它不適用于存儲安全敏感的值。若要為 HiddenField 控件指定值,請使用 Value 屬性,請注意是Value而不是Text。事實上HiddenField并沒有Text屬性,這和DropDownList、CheckBoxList等標準按鈕的屬性命名方式一致。在標準的屬性命名方式中,Text的值是呈現(xiàn)給用戶看到的,而Value的值則是通長是通過代碼進行控制的。例如你可以讓DropDownList的Text屬性顯示用戶名而讓它的Value存儲用戶的編號。
一、HiddenField控件的基本使用
復制代碼 代碼如下:
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="單擊按鈕" onclick="Button1_Click" runat="server" />
單擊 asp:Label id=Label1 Text="0" runat=server /> 次
/form>
/body>
/html>
在上面代碼中, asp:HiddenField id=HiddenField1 runat=Server />就定義了一個隱藏控件在按鈕的單擊事件里計算用戶單擊的次數(shù),并將改次數(shù)賦值給Label1。
你可以將上面代碼中的 asp:HiddenField id=HiddenField1 runat=Server />改為input type=hidden id=HiddenField1 runat=Server >也是可以的
在使用上面代碼里,如果你從瀏覽器里查看源代碼會得到如下的信息:
form name="Form1" method="post" action="Default.aspx" id="Form1">
這是因為HiddenField是通過HTTP協(xié)議進行傳遞數(shù)據(jù)的,所以如果你通過" method="get"或者鏈接打開新的窗體頁,那么HiddenField并不可用。
另外,HiddenField并不是取代Session來維護狀態(tài)的,在上面例子里,雖然你點擊一次按鈕可以顯示你點擊的次數(shù)但是并不是說它可以記錄你的狀態(tài)信息。如果你重新打開瀏覽器那么你看到的此處仍然是0而不是3。
二、HiddenField事件ValueChanged
HiddenField較為常用的是ValueChanged事件,該事件在Value值發(fā)生改變時觸發(fā)該事件。然而在實際使用時,要知道頁面記載順序。在頁面回傳過程中,具體的頁面周期你可以到如下網站查看
http://msdn2.microsoft.com/zh-cn/library/ms178472.aspx
下面的例子說明了這個問題
復制代碼 代碼如下:
html>
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>
三、用javascript把值傳給HiddenField
javascript直接改變控件的值再后臺取不到值,存在HiddenField中變相的取值,代碼如下:
復制代碼 代碼如下:
!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
html xmlns="http://www.w3.org/1999/xhtml" >
head runat="server">
title>無標題頁/title>
script type="text/javascript">
function setValue(){
document.getElementById("%=name.ClientID %>").value="aaaa";
}
/script>
/head>
body>
form id="form1" runat="server">
div>
asp:HiddenField ID="name" runat="server" />
asp:Button ID="Button1" runat="server" Text="Button"
OnClientClick="setValue()" onclick="Button1_Click" />
/div>
/form>
/body>
/html>
您可能感興趣的文章:- ASP.net Substitution 頁面緩存而部分不緩存的實現(xiàn)方法
- ASP.NET中Validation驗證控件正則表達式特殊符號的說明
- ASP.NET中CheckBoxList復選框列表控件詳細使用方法
- ASP.NET中DropDownList下拉框列表控件綁定數(shù)據(jù)的4種方法
- ASP.NET中FileUpload文件上傳控件應用實例
- ASP.NET中HyperLink超鏈接控件的使用方法
- ASP.NET中Image控件使用詳解
- ASP.NET中ImageButton圖片按鈕控件的使用
- ASP.NET 中 Button、LinkButton和ImageButton 三種控件的使用詳解
- ASP.NET Substitution 控件的使用方法