HiddenField 控件顧名思義是隱藏輸入框的伺服器控件,專門用於儲存那些不需要顯示在頁面上、且安全性要求不高的資料。雖然 ASP.NET 已提供 ViewState、Session、Cookie 等多種狀態管理機制,但 HiddenField 仍有其獨特價值:當 ViewState 被停用、Cookie 被瀏覽器封鎖、或 Session 因逾期失效時,HiddenField 成為最可靠的備選方案。
HiddenField 控件呈現為標準的 <input type="hidden" /> HTML 元素,加上 runat="server" 即成為伺服器控件。其主要屬性與事件如下:
<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 沒有 Text 屬性,只能透過 Value 設定或取得值。這與 DropDownList、CheckBoxList 等控件的命名慣例一致——Text 供用戶閱讀,Value 供程式邏輯處理。HiddenField 的值會呈現在用戶端瀏覽器原始碼中,絕不可用於儲存敏感資訊(如密碼、Token 等)。HiddenField 依賴 HTTP POST 協定傳遞資料,若頁面使用 GET 方法或透過超連結開啟新視窗,該控件將失效。<%@ Page Language="C#" %>
<script 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>
<html>
<body>
<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>
此範例展示如何在按鈕點擊事件中累加計數並保存在 HiddenField 中,實現頁面回傳間的資料持久化。
HiddenField 不能取代 Session 進行長期狀態維護。若用戶重新開啟瀏覽器,計數器會歸零,因為隱藏欄位的生命週期僅限於單一頁面的回傳週期。