知识大全 ASP.NET2.0 HiddenField控件

Posted 事件

篇首语:立志宜思真品格,读书须尽苦功夫。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 ASP.NET2.0 HiddenField控件相关的知识,希望对你有一定的参考价值。

ASP.NET2.0 HiddenField控件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  HiddenField控件顾名思义就是隐藏输入框的服务器控件 它能让你保存那些不需要显示在页面上的且对安全性要求不高的数据 也许这个时候应该有这么一个疑问 为什么有了ViewState Session和Cookie等状态保存机制 还需要用起HiddenField呢?

  增加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存储用户的编号

  下面的代码显示的是改控件的基本使用

  <> <head> <script language= C# runat= server > void Button _Click(object sender EventArgs e)

   if (HiddenField Value == String Empty)

  HiddenField Value =

  HiddenField Value = (Convert ToInt (HiddenField Value)+ ) ToString() Label Text = HiddenField Value </script> </head> <body> <h ><font face= Verdana >HiddenField</font></h > <form runat=server> <asp HiddenField id=HiddenField runat=Server /> <asp Button id=Button Text= 单击按钮 onclick= Button _Click runat= server />单击 <asp Label id=Label Text= runat=server /> 次</form> </body> </>

  在上面代码中 <asp HiddenField id=HiddenField runat=Server />就定义了一个隐藏控件在按钮的单击事件里计算用户单击的次数 并将改次数赋值给Label

  你可以将上面代码中的 <asp HiddenField id=HiddenField runat=Server />改为<input type=hidden id=HiddenField runat=Server >也是可以的

  在使用上面代码里 如果你从浏览器里查看源代码会得到如下的信息 <form name= Form method= post action= Default aspx id= Form >这是因为HiddenField是通过HTTP协议进行传递数据的 所以如果你通过 method= get 或者链接打开新的窗体页 那么HiddenField并不可用

  另外 HiddenField并不是取代Session来维护状态的 在上面例子里 虽然你点击一次按钮可以显示你点击的次数但是并不是说它可以记录你的状态信息 如果你重新打开浏览器那么你看到的此处仍然是 而不是

  HiddenField事件  HiddenField较为常用的是ValueChanged事件 该事件在Value值发生改变时触发该事件 然而在实际使用时 要知道页面记载顺序 在页面回传过程中 具体的页面周期你可以到如下网站查看 cn/library/ms aspx下面的例子说明了这个问题

  <head> <script runat= server language= c# > protected void Page_Load(object sender EventArgs e)

   Response Write( <p>页面的Page_Load事件触发 触发时间是 + DateTime Now ToString()) if (HiddenField Value == String Empty)

  HiddenField Value =

  protected void Button _Click(object sender EventArgs e)

   Response Write( <p>Button _Click为改变Hidden的值前事件触发 触发时间是 + DateTime Now ToString()) HiddenField Value = (Convert ToInt (HiddenField Value) + ) ToString() Label Text = HiddenField Value

  

  protected void HiddenField _ValueChanged(object sender EventArgs e)

   Response Write( <p>HiddenField的 ValueChanged事件触发 触发时间是 + DateTime Now ToString())

  </script> </head>

  <body>

  <form id= form runat= server >

  <div> <asp HiddenField ID= HiddenField runat= server OnValueChanged= HiddenField _ValueChanged />

  </div> <asp Label ID= Label runat= server Text= Label ></asp Label>

  <br /> <asp Button ID= Button runat= server OnClick= Button _Click Text= Button />

  </form></body>

  </>

  在这个例子里 我们想要的结果是 当用户单击按钮时 通过按钮的Button _Click事件更改HiddenField 的Value 然后再触发HiddenField 的HiddenField _ValueChanged事件 然而事实真的如此吗?

  运行上面的代码 得到的结果正如你看到的 每次单击时 Button确实改变了HiddenField的值 但是我们在HiddenField _ValueChanged里定义的输出并没有执行 换句话说页面并没有执行ValueChanged事件要理解这个问题还需要了解页面的声明周期 在页面周期过程中 你可以看到在Page_Init里是读取或初始化控件属性 然后再是Control events 这里的事件意思是说 在Page_Init事件里 Web页面会接受用户回传的数据 例如将 <span id= Label >Label</span>赋值给ID为Label 的Text属性 将 <input type= hidden name= HiddenField id= HiddenField value= />的value值赋值给HiddenField 的Value属性 等所有初始化完毕了 页面才开始执行控件的事件——Button _Click 在Button事件里将HiddenField的Value值改变 那么这里既然已经将Value值改变为什么没有执行ValueChanged事件呢?

  此时 虽然这里已经将Value值改变 但是在Page_Init里保存的这是因为当前单击Button按钮时 虽然改变了HiddenField但同样又一次触发了页面的回复 也就是虽然在上一此HiddenValue的值为 而此次将其值改为 但是在页面回传后 由于ViewState会保存上次的装(这里是 ) 所以在Page_Init里 认为HiddenField的初始值为 而本次还是 使得它感觉数据没有变化 所以仍然不会触发ValueChanged事件

  当然 你可以禁用HiddenField来进行处理 就可以执行ValueChanged事件 但是事实上你禁用ViewState后 页面不再保存ViewState的值使得页面认为每一次请求HiddenField的都是新的 例如如下代码 你并没有改变Hiddenfield的值 但是仍然每次都执行

  <%@ Page EnableViewState= false %> <head> <script runat= server language= c# >

  protected void Page_Load(object sender EventArgs e)

  

  if (HiddenField Value == String Empty)

  HiddenField Value =

  

  protected void Button _Click(object sender EventArgs e)

   // HiddenField Value = (Convert ToInt (HiddenField Value) + ) ToString() Label Text = TextBox Text

  protected void HiddenField _ValueChanged(object sender EventArgs e)

   Response Write( Changed + DateTime Now ToString()) Response Write(HiddenField Value) Response Write(TextBox Text)

  </script> </head> <body>

  <form id= form runat= server > <div>

  <asp HiddenField ID= HiddenField runat= server OnValueChanged= HiddenField _ValueChanged />

  </div>

  <asp Label ID= Label runat= server Text= Label ></asp Label>

  <br /> <asp TextBox runat=server ID=TextBox ></asp TextBox>

  <asp Button ID= Button runat= server OnClick= Button _Click Text= Button />

  </form>

  </body>

  </>

cha138/Article/program/net/201311/12579

相关参考

知识大全 ASP.Net2.0 数据绑定控件的优越性

ASP.Net2.0数据绑定控件的优越性  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  尽管有丰

知识大全 ASP.NET2.0服务器控件之创建复杂属性

ASP.NET2.0服务器控件之创建复杂属性  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  页面

知识大全 ASP.NET2.0中数据源控件之异步数据访问

ASP.NET2.0中数据源控件之异步数据访问  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在

知识大全 ASP.NET2.0中使用数据源控件之基础知识

ASP.NET2.0中使用数据源控件之基础知识  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!数据源

知识大全 ASP.NET 2.0高级控件之FileUpload控件

ASP.NET2.0高级控件之FileUpload控件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧

知识大全 Asp.net 2.0 自定义控件开发

Asp.net2.0自定义控件开发  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  (一)概述  

知识大全 ASP.NET 2.0服务器控件之验证控件示例

ASP.NET2.0服务器控件之验证控件示例  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在上

知识大全 ASP.NET 2.0移动开发之列表控件

ASP.NET2.0移动开发之列表控件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!概述  在很多

知识大全 ASP.NET 2.0服务器控件开发精要

ASP.NET2.0服务器控件开发精要  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  利用ASP

知识大全 ASP.Net 2.0中的5个数据控件

ASP.Net2.0中的5个数据控件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!第一篇的入门帖就