视图源中的视图[“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";

那么有什么区别呢???

和字符串"嗨"在哪里保存? 在这个隐藏还是在哪里?

视图源中的视图[“X”]和__viewstate有什么区别

呈现页面时,它会将其视图状态序列化为 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"。