为了账号安全,请及时绑定邮箱和手机立即绑定

关于asp.net ViewState的一些疑问,望高手指点。

关于asp.net ViewState的一些疑问,望高手指点。

小怪兽爱吃肉 2018-11-21 10:15:18
一直对ViewState 了解不是很透彻。这次彻彻底底的去了解了下。结果还是有点小疑问。首先请求一个页面,页面上面有几个服务器控件。此时服务器会去解析请求的这个页面。并把这些服务器控件 的当前状态获取并序列化最终以 base64的字符 随解析后的页面一起发送到客户端。保持在__VIEWSTATE 这个隐藏域中。 接着 用户对页面上的控件进行赋值等操作。然后再次提交页面。此时页面将回传到服务器。于是页面开始解析这个__VIEWSTATE 隐藏域里面的字符。并将这些这些字符还原成之前的对象。然后通过 控件的 LoadViewState 方法进行重新装载。(此处有点疑问。因为__VIEWSTATE里面存放的是用户修改控件之前的值也就是上一次的值。而不是用户对控件赋值后的最新值。那么如果这里解析__VIEWSTATE的值重新装载给控件的话。是不是会把用户修改的控件值还原成上一次的值。比如一个文本框第一次请求时默认为空,然后用户给他填写了一个1之后提交了这个表单。按上面的思路的话 服务器获取到的__VIEWSTATE里面记录的这个文本框的状态值应该是空值而不是1.不知道大家有没有明白我的意思。  )然后又调用控件的SaveViewState方法获取所有控件的状态然后序列化并转换成base64字符再次发生到客户端。
查看完整描述

2 回答

?
弑天下

TA贡献1818条经验 获得超8个赞

服务器 Request 会接收 页面提交过来的值,通过id key会替换了原来的值。

查看完整回答
反对 回复 2018-11-25
?
慕森卡

TA贡献1806条经验 获得超8个赞

服务器应该是会通过request得到input的type=“text,raido ,checkbox”等的新值,然后返回去的时候替换掉旧值的

查看完整回答
反对 回复 2018-11-25
  • 2 回答
  • 0 关注
  • 244 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信