ASP.NET 允许您将信息存储在 HiddenField 控件中,此控件将呈现为一个标准的 HTML 隐藏域。
隐藏域在浏览器中不以可见的形式呈现,但您可以就像对待标准控件一样设置其属性。
当向服务器提交页时,隐藏域的内容将在 HTTP 窗体集合中随同其他控件的值一起发送。
隐藏域可用作一个储存库,您可以将希望直接存储在页中的任何特定于页的信息放置到其中。
安全注意 
恶意用户可以很容易地查看和修改隐藏域的内容。请不要在隐藏域中存储任何敏感信息或保障应用程序正确运行的信息。
HiddenField 控件在其Value属性中只存储一个变量,并且必须通过显式方式添加到页上。
为了在页处理期间能够使用隐藏域的值,必须使用 HTTP POST 命令提交相应的页。如果在您使用隐藏域的同时,为了响应某个链接或 HTTP GET 命令而对页进行了相应处理,那么隐藏域将不可用。
HiddenField 控件用于存储一个值,在向服务器的各次发送过程中,需保持该值。它呈现为 <input type= "hidden"/> 元素。
通常情况下,Web 窗体页的状态由视图状态、会话状态和 cookie 来维持。但是,如果这些方法被禁用或不可用,则可以使用 HiddenField 控件来存储状态值。
若要指定 HiddenField 控件的值,请使用 Value 属性。
在向服务器的各次发送过程中,当 HiddenField 控件的值更改时,将引发ValueChanged事件
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>无标题页</title>
<script type="text/javascript">
function PageLoad()
{
// Set the value of the HiddenField control with the
// value from the TextBox.
form1.ValueHiddenField.value = form1.ValueTextBox.value;
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="ValueTextBox" runat="server" />
<br />
<input type="submit" name="SubmitButton" value="Submit" οnclick="PageLoad()" />
<br />
<asp:Label ID="Message" runat="server" />
<asp:HiddenField ID="ValueHiddenField" runat="server" OnValueChanged="ValueHiddenField_ValueChanged" />
</div>
</form>
</body>
</html>
总结
可以在页上的隐藏域中存储特定于页的信息,作为维护页的状态的一种方式。
如果使用隐藏域,最好在客户端上只存储少量经常更改的数据。
注意: 
如果使用隐藏域,则必须使用 HTTP POST 方法向服务器提交页,而不是使用通过页 URL 请求该页的方法(HTTP GET 方法)向服务器提交页。 
使用隐藏域的优点
1.不需要任何服务器资源:隐藏域在页上存储和读取。 
2.广泛的支持:几乎所有浏览器和客户端设备都支持具有隐藏域的窗体。
3.实现简单:隐藏域是标准的HTML控件,不需要复杂的编程逻辑。
使用隐藏域的缺点
1.潜在的安全风险   
隐藏域可以被篡改。如果直接查看页输出源,可以看到隐藏域中的信息,这导致潜在的安全性问题。
您可以手动加密和解密隐藏域的内容,但这需要额外的编码和开销。如果关注安全,请考虑使用基于服务器的状态机制,从而不将敏感信息发送到客户端。
2.简单的存储结构   
隐藏域不支持复杂数据类型。
隐藏域只提供一个字符串值域存放信息。
若要存储多个值,必须实现分隔的字符串以及用来分析那些字符串的代码。您可以手动分别将复杂数据类型序列化为隐藏域以及将隐藏域反序列化为复杂数据类型。但是,这需要额外的代码来实现。
如果您需要将复杂数据类型存储在客户端上,请考虑使用视图状态。视图状态内置了序列化,并且将数据存储在隐藏域中。
3.性能注意事项   
由于隐藏域存储在页本身,因此如果存储较大的值,用户显示页和发送页时的速度可能会减慢。
4.存储限制   
如果隐藏域中的数据量过大,某些代理和防火墙将阻止对包含这些数据的页的访问。因为最大数量会随所采用的防火墙和代理的不同而不同,较大的隐藏域可能会出现偶发性问题。
如果您需要存储大量的数据项,请考虑执行下列操作之一:
(1)将每个项放置在单独的隐藏域中。
(2)使用视图状态并打开视图状态分块,这样会自动将数据分割到多个隐藏域。
(3)不将数据存储在客户端上,将数据保留在服务器上。向客户端发送的数据越多,您的应用程序的表面响应时间越慢,因为浏览器需要下载或发送更多的数据。
Sql Server2005 Transact-SQL 新兵器学习总结之-总结 
MS SQL数据库备份和恢复存储过程(加强版本) 
sql server中分布式查询随笔(链接服务器(sp_addlinkedserver)和远程登录映射(sp_addlinkedsrvlogin)使用小总结) 
WAP开发资料站(最新更新) 
自定义格式字符串随笔 (IFormattable,IFormatProvider,ICustomFormatter三接口的实现) 
Mcad学习笔记之异步编程(AsyncCallback 委托,IAsyncResult接口,BeginInvoke方法,EndInvoke方法的使用小总结) 
Mcad学习笔记之通过反射调用類的方法,屬性,字段,索引器(2種方法) 
Mcad学习笔记之序列化(2进制和Soap序列化) 
Mcad学习笔记之委托再理解(delegate的构造器,BeginInvoke,EndInvoke,Invoke4个方法的探讨) 
WinForm开发,窗体显示和窗体传值相关知识总结 
Mcad学习笔记之Microsoft Windows服务 
copy某目錄下的所有的目錄和文件到目的目錄(目錄數據備份) 
ASP.NET状态管理之一(概括篇)
我的系列文章
A.Sql Server2005 Transact-SQL 新兵器学习 
B.MCAD学习 
C.代码阅读总结 
D.ASP.NET状态管理 
E.DB(数据库) 
F.WAP 
G.WinForm 
H.Flex
我的好文推荐
FlexAir开源版-全球免费多人视频聊天室,免费网络远程多人视频会议系统((Flex,Fms3联合开发))<视频聊天,会议开发实例8> 
Sql Server2005 Transact-SQL 新兵器学习总结之-总结 
MS SQL数据库备份和恢复存储过程(加强版本) 
sql server中分布式查询随笔(链接服务器(sp_addlinkedserver)和远程登录映射(sp_addlinkedsrvlogin)使用小总结) 
ASP.NET2.0国际化/本地化应用程序的实现总结(多语言,多文化页面的实现) 
WAP开发资料站(最新更新) 
自定义格式字符串随笔 (IFormattable,IFormatProvider,ICustomFormatter三接口的实现) 
Mcad学习笔记之异步编程(AsyncCallback 委托,IAsyncResult接口,BeginInvoke方法,EndInvoke方法的使用小总结) 
Mcad学习笔记之通过反射调用類的方法,屬性,字段,索引器(2種方法) 
Mcad学习笔记之序列化(2进制和Soap序列 化) 
Mcad学习笔记之委托再理解(delegate的构造器,BeginInvoke,EndInvoke,Invoke4个方法的探讨) 
ASP.NET状态管理之一(概括篇) 
Flex,Fms学习笔记
本文转自aierong博客园博客,原文链接:http://www.cnblogs.com/aierong/archive/2004/07/14/23953.html,如需转载请自行联系原作者

ASP.NET状态管理之三(隐藏域HiddenField)相关推荐

  1. ASP.NET状态管理之一(概括篇)

    每次将网页发送到服务器时,都会创建网页类的一个新实例.在传统的Web编程中,这通常意味着在每一次往返行程中,与该页及该页上的控件相关联的所有信息都会丢失.例如,如果用户将信息输入到文本框,该信息将在从 ...

  2. ASP.NET 状态管理概述(MSDN)

    每次将网页发送到服务器时,都会创建网页类的一个新实例.在传统的 Web 编程中,这通常意味着在每一次往返行程中,与该页及该页上的控件相关联的所有信息都会丢失.例如,如果用户将信息输入到文本框,该信息将 ...

  3. ASP.NET状态管理详解,让你明明白白

    开发WinFrom的程序员可能不会在意维护应用程序的状态,因为WinFrom本身就在客户端运行,可以直接在内存中维护其应用程序状态.但ASP.NET应用程序在服务器端运行,客户端使用无状态的http协 ...

  4. ASP.NET 状态管理概览

    页面每次被回传到服务器的时候都会创建 Web 页面类的一个新实例.在传统的 Web 开发中,这意味着在每次回传的过程中,页面中所有与页面和控件相关联的信息都将被丢失.例如,如果用户在一个文本框中输入了 ...

  5. ASP.NET状态管理之五(Cookie)

    Cookie 提供了一种在 Web 应用程序中存储用户特定信息的方法. 例如,当用户访问您的站点时,您可以使用 Cookie 存储用户首选项或其他信息.当该用户再次访问您的网站时,应用程序便可以检索以 ...

  6. 【转】【C#.NET】ASP.NET状态管理之一:Cookie

    [C#.NET]ASP.NET状态管理之一:Cookie 状态管理是你对同一页或不同页的多个请求维护状态和页信息的过程.与所有基于 HTTP 的技术一样,Web 窗体页是无状态的,这意味着它们不自动指 ...

  7. ASP.NET状态管理之六(缓存Cache)

    ASP.NET状态管理之六(缓存Cache) ASP.NET 为您提供了一个强大的.便于使用的缓存机制,用于将需要大量服务器资源来创建的对象存储在内存中.缓存这些类型的资源会大大改进应用程序的性能. ...

  8. ASP.NET状态管理

    第一部分:页面状态介绍 Http协议----"无状态协议" Web服务器每分钟对上千个用户进行管理的一种方式就是执行所谓的"无状态"链接.只要有一个希望浏览器返 ...

  9. ASP.NET状态管理之十三(总结)

    状态管理是您对同一页或不同页的多个请求维护状态和页信息的过程.与所有基于 HTTP 的技术一样,Web 窗体页是无状态的,这意味着它们不自动指示序列中的请求是否全部来自相同的客户端,或者单个浏览器实例 ...

最新文章

  1. 麻省理工研究:深度图像分类器,居然还会过度解读
  2. 【每日一算法】实现strStr()
  3. PowerShell针对SCVMM批量导出模板的描述信息以及导入
  4. 字符编码总结(UTF-8,UNICODE)
  5. 功能测试工作的一点总结
  6. 软件架构设计——解释器模式
  7. xargs 主要用于不支持管道的shell命令*****
  8. docker如何将运行中的容器保存为docker镜像?
  9. 用Veritas制作MSI文件,Active Directory系列之二十四
  10. 内容页超连接关键词的完美实现
  11. 推荐 7 个优质技术号
  12. 10-ret/retf+call+mul
  13. doip 源码_DoIP技术(一)
  14. 逆clarke变换_克拉克(CLARKE)及帕克(PARK)变换.pdf
  15. IDEA 使用破解补丁激活
  16. 国内3G市场发展情况
  17. 【电脑使用】Windows 10账户那些事儿
  18. 三里屯有优衣库也有程序员,猜猜他们在干嘛?
  19. 实例:用C#.NET手把手教你做微信公众号开发(20)--使用微信支付线上收款:jsapi方式
  20. mysql中avg函数如果有空值_对于 AVG 函数,如果列中所有行的值都是 null,那么 AVG 函数返回的值是( )...

热门文章

  1. 马斯克的第七个孩子曝光:终于有女儿了!前女友所“生”,名字非常赛博朋克...
  2. 一个模型搞定图像标注、读图问答两件事,VQA准确率逼近人类水平 | Demo可玩...
  3. 苹果自己出钱给第三方App投广告,开发者却不乐意了
  4. 2位图灵奖得主、7位院士等一众AI大佬云集共议数字化转型 | CNCC 2021
  5. 48万!百度推出全球最便宜RoboTaxi,赚钱能力2倍于人类网约车
  6. 打开iPhone自拍,就能用虚幻引擎开发3A游戏大作!新应用无门槛创造超逼真游戏角色...
  7. 新特效火爆抖音!各路神仙齐唱《蚂蚁呀嘿》,网友:短短几秒需一生来治愈...
  8. 清华教授沈向洋:创新就要做到极致,用开源的方式培养未来的工程师
  9. 十亿红包还不够,揭秘快手春节四大技术玩法:AI/AR/MR都被装进App,为了这个春晚真拼了...
  10. 从终端运行python程序