view state(转)

view state

ViewState 用于维护页面的 UI 状态,它是由 ASP.NET 页面框架管理的一个隐藏的窗体字段。当 ASP.NET 执行某个页面时,该页面上的 ViewState 值和所有控件将被收集并格式化成一个编码字符串,然后被分配给隐藏窗体字段的值属性(即 )。由于隐藏窗体字段是发送到客户端的页面的一部分,所以 ViewState 值被临时存储在客户端的浏览器中。如果客户端选择将该页面回传给服务器,则 ViewState 字符串也将被回传。在上面的图 2 中可以看到 ViewState 窗体字段及其回传的值。 回传后,ASP.NET 页面框架将解析 ViewState 字符串,并为该页面和各个控件填充 ViewState 属性。然后,控件再使用 ViewState 数据将自己重新恢复为以前的状态。 关于 ViewState 还有三个值得注意的小问题。 如果要使用 ViewState,则在 ASPX 页面中必须有一个服务器端窗体标记 ( 。窗体字段是必需的,这样包含 ViewState 信息的隐藏字段才能回传给服务器。而且,该窗体还必须是服务器端的窗体,这样在服务器上执行该页面时,ASP.NET 页面框架才能添加隐藏的字段。 页面本身将 20 字节左右的信息保存在 ViewState 中,用于在回传时将 PostBack 数据和 ViewState 值分发给正确的控件。因此,即使该页面或应用程序禁用了 ViewState,仍可以在 ViewState 中看到少量的剩余字节。 在页面不回传的情况下,可以通过省略服务器端的 标记来去除页面中的 ViewState。 选择会话状态还是 ViewState?在某些情况下,将状态值保存在 ViewState 中并不是最佳选择,最常用的替代方法就是会话状态,它通常更适用于: 大量的数据。由于 ViewState 增加了发送到浏览器的页面的大小(HTML 有效负载),同时也增加了回传的窗体的大小,因此不适合存储大量数据。 未在 UI 中显示的安全数据。尽管 ViewState 数据已被编码,并且可以选择对其进行加密,但始终不将数据发送到客户端才是最安全的。因此,会话是更安全的选择。(由于数据库需要额外的凭据进行验证,因此将数据存储在数据库中会更安全。可以添加 SSL 以获得更安全的链接。)但是,如果在 UI 中已经显示了该专用数据,那么您应该已经确认了链接的安全性。在这种情况下,将同样的值放入 ViewState 不会降低安全性。 尚未序列化到 ViewState 中的对象,如 DataSet。ViewState 序列化程序只为一小部分常用的对象类型进行了优化,如下所示。其他可序列化的类型或许可以保留在 ViewState 中,但速度会变慢,并会生成一个非常大的 ViewState。 关于安全方面: ASP.net中viewstate信息被用hash code进行编码。以确保安全,这是默认的设置,如需更改为不使用has code,如下: ... 也可对 view state信息进行加密:<%@Page ViewStateEncryptionMode="Always"> 或:

转载于:https://www.cnblogs.com/dugoogle/archive/2007/09/17/895818.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值