__VIEWSTATE 持有啥?

Posted

技术标签:

【中文标题】__VIEWSTATE 持有啥?【英文标题】:What does the __VIEWSTATE hold?__VIEWSTATE 持有什么? 【发布时间】:2010-11-23 22:15:09 【问题描述】:

很抱歉,我可能会提出这样一个基本问题,但在 ASP.NET 网站中,__VIEWSTATE 输入字段代表什么?

另外,有没有办法计算它的值(基于其他表单字段的值)?

编辑

我知道 __VIEWSTATE,顾名思义,维护网页中表单字段值的值,但是我有兴趣知道这个状态(字符串)是如何生成的。如果我 base64_decode 任何 __VIEWSTATE 字符串,我看到的只是一堆神秘的 html

有什么方法可以更好地理解编码的具体内容吗?我搜索了过去的问题,发现了一些可以做到这一点的工具like this one,但不幸的是它似乎不起作用。

我之所以问这个问题是因为我可以访问一个 Web 服务 API,它为我提供了我需要使用的大部分值。但是,我还需要一个仅在表单最后阶段可用的附加字段。我已经联系了网络服务提供商,但不幸的是,他们不会这么快更新他们的 API。我希望我可以使用 Web 服务数据预填充表单初始值,然后计算 __VIEWSTATE 以访问显示在表单最后阶段的最后一个字段,这将使整个过程更快。

我不确定我是否说得够清楚......

【问题讨论】:

这个问题的答案是链接列表:/ 【参考方案1】:

在 Razor 中执行此操作的最简单方法是将其放在视图上:

@
    throw new Exception();
 

【讨论】:

【参考方案2】:

请查看http://forums.techarena.in/windows-software/1329157.htm 上发布的 biter 脚本。

该脚本显示了如何设置和使用 __ViewState 和其他 .NET 变量。

该脚本登录到 .NET 站点并获取库存值,而无需通过浏览器。脚本以编程方式执行,而不是用户手动执行。

【讨论】:

【参考方案3】:

Paul Wilson 有一篇很好的文章:ViewState: All You Wanted to Know

可以使用LosFormatter 类对VIEWSTATE 进行反序列化。

【讨论】:

【参考方案4】:

如果你真的想好好理解,请看Dave Reed's article about ViewState。

【讨论】:

【参考方案5】:

计算它的价值是什么意思?

假设它是一对压缩的(实际上是 Base64 编码的)文本形式的表单字段/值,它被序列化为服务器端对象供您使用。

【讨论】:

【参考方案6】:

快速的谷歌搜索回答了这个问题:

http://msdn.microsoft.com/en-us/library/ms972976.aspx

第一句话:

Microsoft® ASP.NET 视图状态,在 简而言之,是使用的技术 ASP.NET 网页将更改持久保存到 Web 表单的状态 回发。

【讨论】:

搜索谷歌?共产!如果人们开始这样做,这个网站的 90% 就会消失。 :) +1,这很有趣,因为它是真的……(模仿 Sheldon Cooper 的声音来读) @John Lockwood 和 @felideon 1 plus 为你们俩加分 有趣的是,SO 90% 的流量来自谷歌。我认为 Jeff Atwood 在其中一个播客中提到了它。

以上是关于__VIEWSTATE 持有啥?的主要内容,如果未能解决你的问题,请参考以下文章

__doPostBack方法解析 __VIEWSTATE __EVENTTARGET __doPostBack __EVENTARGUMENT

viewstate

<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value=&quo

ViewState的用法(转载的)

转载ViewState的用法

form submit时将__VIEWSTATE和__VIEWSTATEGENERATOR一起post到另外的页面,出现验证视图状态 MAC 失败。