视图源中的视图[“X”]和__viewstate有什么区别
本文关键字:视图 viewstate 区别 什么 | 更新日期: 2023-09-27 18:37:02
我想了解视图源代码中 viewsate["x"] 和__viewstate之间的区别
即
在"查看源代码"页中,隐藏控件中有视图状态,如下所示:
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="dO3F9exemRdHoXxGHr"/>
但是在 C# 中,我可以创建如下视图状态:
viewstate["x"]="Hi";
那么有什么区别呢???
和字符串"嗨"在哪里保存? 在这个隐藏还是在哪里?
呈现页面时,它会将其视图状态序列化为 base-64 使用 LosFormatter 类编码字符串并(默认情况下)存储它 在隐藏的表单域中。在回发时,隐藏的表单字段为 检索并反序列化回视图状态的对象 表示,然后用于恢复 控件层次结构中的控件。
这意味着是的,它保存在这个hidden field
中,但它是encoded
。有关详细信息,请阅读 MSDN 文章。这句话来自 6.解析视图状态。
如果你有任何兴趣,你可以解析ViewState并查看他的"真实值"。你可以搜索视图状态解析器,经过研究我找到了这个网站
ViewState 是服务器端的存储方法,保留在客户端。你看到的是同一枚硬币的两面
你在服务器端使用它做这样的事情
Viewstate["x"]="Hi";
当响应发送到客户端时,ViewState 存储将被序列化并以输入字段的形式发送到客户端
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="dO3F9exemRdHoXxGHr"/>
当您使用 ViewState["x"]
设置视图状态时,它存储在隐藏字段中 __VIEWSTATE
。但是,它是首先编码的,因此您不会在该隐藏字段中看到"Hi"。