我很抱歉可能会提出这样一个基本问题,但在ASP.NET网站上__VIEWSTATE输入字段代表什么?
另外,有没有办法计算它的值(基于其他表单字段的值)?
我理解__VIEWSTATE,顾名思义,维护网页中表单字段值的值,但我感兴趣的是如何生成这种状态(字符串)。如果我base64_decode任何__VIEWSTATE字符串,我看到的是一堆神秘的HTML。
有没有办法更好地了解究竟是什么编码?我搜索过去的问题,我发现了一些可以做这个like this one的工具,但不幸的是它似乎没有用。
我问这个的原因是因为我访问了一个Web服务API,它为我提供了我需要使用的大部分值。但是,我还需要一个仅在表单的最后一个阶段可用的附加字段。我已经联系了网络服务提供商但不幸的是他们不会很快更新他们的API。我希望我可以使用Web服务数据预填充表单初始值,然后计算__VIEWSTATE以访问在表单的最后一个阶段显示的最后一个字段,这将使整个过程更快。
不确定我是否让自己清楚了......
保罗威尔逊有一篇非常好的文章:ViewState: All You Wanted to Know
可以使用LosFormatter类对VIEWSTATE进行反序列化。
如果你真的想要了解它,请参阅Dave Reed's article about ViewState。
快速谷歌搜索回答了这个问题:
http://msdn.microsoft.com/en-us/library/ms972976.aspx
第一句话:
简而言之,Microsoft®ASP.NET视图状态是ASP.NET网页用于跨回发持久更改Web窗体状态的技术。
请看看在http://forums.techarena.in/windows-software/1329157.htm发布的biter脚本。
该脚本显示了如何设置和使用__ViewState和其他.NET变量。
该脚本登录到.NET站点,并获取库存值,而无需通过浏览器。脚本不是手动执行,而是以编程方式执行。
计算它的价值是什么意思?
假设它是一个压缩的(实际上是Base64编码的)文本形式的表单字段/值对,它被序列化为服务器端对象供您使用。
在Razor中执行此操作的最简单方法是将其放在视图上:
@{
throw new Exception();
}