为什么你会在Session存储对象上使用asp.net的ViewState存储对象?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (97)

除了因为会话存储是多个页面的会话全局,为什么你会想要使用视图状态来保存值呢?

从客户机到服务器之间来回发送除查询字符串之外的任何类型的信息似乎有点荒谬。我的意思是浪费带宽(!),仅仅是为了存储目的。这个会话虽然是跨多个页面的全局,但它似乎是视图状态的一个完全优越的替代方案。

特别是使用asp.net ajax控件和变体时,viewstate可能很快变得臃肿,跟踪所有这些不同控件和html元素的各种状态和变量。

但为什么有页面变量和对象的视图状态存储?

也许我错过了页面viewstate存储的另一个很好的用法,有没有人知道那里的东西?

提问于
用户回答回答于

Viewstate或Session的全部原因是将网络从无状态系统转变为动态的定制体验。当用户请求一个页面时,可以恢复用户离开体验的唯一方式是记住服务器或用户客户端上的状态。

Viewstate是一种用于记住用户在客户端上的状态的机制。会话是一种记住用户在服务器上的状态的机制。

Viewstate是一个瞬态存储机制。使用viewstate的控件将其状态呈现为HTML页面,作为隐藏输入。为了防止篡改,它被签名。然而,它没有加密,所以你可能想避免把任何敏感的东西放在那里。Viewstate适用于想要发布多个请求(页面加载)系列的情况。这种情况的一个例子是,当表单没有被验证,因为用户可能输入了错误的电子邮件地址或者某个东西,并且您想要恢复表单,就像在用户提交之前那样。缺点是视图状态可以轻松地将页面大小增加30-50%。

另一方面,会话存储在服务器上。客户端得到一个令牌,告诉服务器哪些内存是他们的。这可能比viewstate更安全,因为数据不会一遍又一遍地重传给用户。虽然有折衷。服务器可能会耗尽内存。或者,如果用户的会话中断,用户可能会丢失数据。

一般来说,没有“正确的”答案可供使用。这完全取决于你想要完成的事情。

大部分与控件有关的事情都应该使用Viewstate。如果正在处理敏感信息,请考虑Session。如果有针对特定页面的数据,请使用viewstate。如果这是在用户访问网站时需要的数据,请参阅Session。

热门问答

腾讯会议共享屏幕,其他人收到的是黑屏?

腾讯云音视频 支持 移动端h5吗( 不是小程序的)?

shixin

腾讯 · 高级产品经理 (已认证)

推荐

实时音视频TRTC的Web版是基于WebRTC的方案,需要浏览器的对WebRTC的支持,支持WebRTC的浏览器就可以。但是,移动端浏览器对WebRTC支持的情况并不好,建议使用小程序版。

如何用命令修改腾讯云解析目标ip?

氧化先生道可道 非常道 名可名 非常名
推荐
可以,参考: https://cns.api.qcloud.com/v2/index.php? &<公共请求参数> &Action=RecordCreate &domain=qcloud.com &subDomain=www &recordType=A &recordLine=默...... 展开详请

腾讯云IoT物联平台中如何自定义Topic?

DylanRichard

腾讯 · 产品经理 (已认证)

万物互联的时代,欢迎来到IoT的世界
推荐已采纳
第二个是物联网通信平台(IoT Hub)的,https://cloud.tencent.com/document/product/634/32546。目前物联网开发平台(IoT explorer)只支持基于数据模板协议的接入(文档 https://cloud.tencent.co...... 展开详请

组队匹配完整流程是怎样的?感觉缺少API支持?

您好,matchgroup匹配成功后,小组成员会进入同一个房间和同一个队伍,这个API需要传玩家ID,通过邀请好友进房间就能拿到玩家的id,解散房间后再调用matchgroup,在没有解散房间不能调用matchGroup 接口。

SCF使用了k8s或docker容器技术吗?

Mason-Serverless

腾讯 · 产品经理 (已认证)

推荐

SCF的新架构使用的轻量化虚拟机技术,同时MVM里内嵌的有docker,但是没有使用K8S

所属标签

扫码关注云+社区

领取腾讯云代金券