【问题标题】:Completely disabling view state for Web Application完全禁用 Web 应用程序的视图状态
【发布时间】:2013-07-02 14:54:31
【问题描述】:

我注意到,即使我在应用程序级别(<pages enableViewState="false"/>)或页面级别(页面属性中的EnableViewState="false")禁用 ViewState,您仍然可以在页面源中找到 viewstate 的隐藏字段:

     <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="NSe2ZpTF4OoGVDqwwtGVO+/liqfw9gUFmsPSD0n169Su3I6VwhG8xgVaSe0iTUfiPp1x0FbW9q47hkfxgDCvxjd2Z9RKo7N+WljNcEezg4Q=" />

为什么在这种情况下它仍然存在? ASP.net 里面存储了什么?

【问题讨论】:

  • 自己寻找 :-) ignatu.co.uk/ViewStateDecoder.aspx(关于它存储的内容)
  • 您使用母版页吗?这可能是您的按钮控件的验证数据,以避免入侵页面。
  • @davidkonrad 它说:无法解码视图状态。错误是:“序列化数据无效。”
  • @Aristos 不,没有母版页。我创建了 emtpy web 应用程序,然后从模板添加页面并在其上放置了单个下拉列表。
  • 对不起。也许您上面的视图状态在base64之后以某种方式加密?无论如何,它通常可以工作。我不是 ASP'er,但使用此工具查看视图状态包含的内容。请将此用于解释stackoverflow.com/a/2305310/1407478

标签: asp.net webforms viewstate


【解决方案1】:

请注意,从 Asp.Net 2.0 开始,__VIEWSTATE 隐藏字段不仅存储了ViewState,还存储了ControlState

控制状态类似但独立于常规视图状态。控件状态无法关闭,因此如果您的页面上有任何需要控件状态的控件,则会导致 __VIEWSTATE 隐藏字段出现在呈现的标记中。

有关控制状态的更多信息,请参阅this page on MSDN

【讨论】:

    猜你喜欢
    • 2021-05-02
    • 2015-10-30
    • 2013-04-08
    • 2019-06-05
    • 2014-01-30
    • 2010-10-26
    • 1970-01-01
    • 2017-10-07
    • 2020-03-11
    相关资源
    最近更新 更多