【问题标题】:Reasons why viewstate validation fails (but only sometimes)视图状态验证失败的原因(但只是有时)
【发布时间】:2010-02-05 11:59:58
【问题描述】:

以下消息出现在我们的日志中:

视图状态所在的控件树 正在加载必须与控件匹配 用于保存视图状态的树 在上一个请求期间。为了 例如,添加控件时 动态地,期间添加的控件 回发必须匹配类型和 期间添加的控件的位置 初始请求。

嗯,这很清楚,关于这个主题已经写了很多。但是,我无法重现这种行为,而且我每天只能在日志中发现几千个错误;所以它可能不是那么明显。

有问题的页面有一个UpdatePanel,并根据查询字符串加载三个用户控件之一。

某些客户端是否存在任何已知问题,或任何其他可能的解释?

【问题讨论】:

    标签: asp.net viewstate


    【解决方案1】:

    一个可能的问题可能是,

    • 动态加载控件
    • 你没有给他们明确的 ID
    • 重新创建这些控件的顺序不同(GET 与 POST)

    我曾经遇到过这样的问题。 Repeater 也是这种行为的良好候选者,因为每个 Item 都是一个 INamingContainer。如果在回发期间中继器的内容发生更改,您可能会收到该错误。

    【讨论】:

      【解决方案2】:

      我在页面上存在更新面板并且该页面之外某处的值被更改但从未传播到客户端的情况下看到了这种行为。

      解决方案是确保任何被更改的值都会在客户端得到更新。因此,当回发发生时,所有数据都与服务器端应该存在的数据匹配。

      如果您有此类数据,您也可以将其放入更新面板中。

      在它上面设置UpdateMode="Conditional",在你的代码隐藏中你可以在需要更新它时调用更新面板.update方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-10-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-24
        • 2011-12-18
        相关资源
        最近更新 更多