ASP.NET2.0 HiddenField控件(1)
点击次数:21 次 发布日期:2008-11-26 14:15:32 作者:源代码网
|
源代码网推荐 增加HiddenField,其实是为了让整个状态管理机制的应用程度更加全面。因为不管是ViewState、Cookie还是Session,都有其失效的时候,比如用户因某种需求要求设置ViewState为false,或者环境条件限制使用Cookie,或者用户长时间没有动作导致Session过期等等,那这个时候HiddenField无疑是最佳选择。 源代码网推荐 源代码网推荐 HiddenField控件的作用简单的说是用于存储需要在向服务器的发送间保持的值。它作为 <input type= "hidden"/> 元素呈现,并且通过添加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 的值将呈现给客户端浏览器,所以它不适用于存储安全敏感的值。若要为 HiddenField 控件指定值,请使用 Value 属性,请注意是Value而不是Text。事实上HiddenField并没有Text属性,这和DropDownList、CheckBoxList等标准按钮的属性命名方式一致。在标准的属性命名方式中,Text的值是呈现给用户看到的,而Value的值则是通长是通过代码进行控制的。例如你可以让DropDownList的Text属性显示用户名而让它的Value存储用户的编号。 源代码网推荐 下面的代码显示的是改控件的基本使用。 源代码网推荐 <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 />就定义了一个隐藏控件在按钮的单击事件里计算用户单击的次数,并将改次数赋值给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协议进行传递数据的,所以如果你通过" method="get"或者链接打开新的窗体页,那么HiddenField并不可用。 源代码网推荐 另外,HiddenField并不是取代Session来维护状态的,在上面例子里,虽然你点击一次按钮可以显示你点击的次数但是并不是说它可以记录你的状态信息。如果你重新打开浏览器那么你看到的此处仍然是0而不是3。 源代码网推荐 源代码网推荐 HiddenField事件 源代码网推荐 HiddenField较为常用的是ValueChanged事件,该事件在Value值发生改变时触发该事件。然而在实际使用时,要知道页面记载顺序。在页面回传过程中,具体的页面周期你可以到如下网站查看 源代码网推荐 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事件触发,触发时间是:" + 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的值前事件触发,触发时间是:" + 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事件触发,触发时间是:" + 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> 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。 源代码网推荐 源代码网供稿. |
