【问题标题】:ViewState error: Concurrent users modifying dynamic controlsViewState 错误:并发用户修改动态控件
【发布时间】:2010-12-10 05:29:52
【问题描述】:

拥有一个动态添加控件的页面。正在从数据库中检索控件状态,并在回发时将控件重新添加到页面。用户可以通过 UI 添加/删除控件。当两个用户在同一页面上并且一个添加/删除控件时,另一个用户将在下次尝试修改控件状态时收到 ViewState 错误。

"加载视图状态失败。要加载视图状态的控件树必须与上一次请求期间用于保存视图状态的控件树匹配。例如,动态添加控件时,在回发必须与初始请求期间添加的控件的类型和位置相匹配。”

这是因为在绘制页面时我使用了一组控件,而在回发时我得到了一组不同的控件,因为控件状态已被不同的用户修改。

我了解错误及其发生的原因,但我认为我在这里遗漏了一些东西。有没有办法让页面动态添加控件并可以处理修改控件状态的并发用户?

【问题讨论】:

    标签: asp.net viewstate dynamic-controls


    【解决方案1】:

    您需要将当前用户的状态与或全局状态分开。在回发时,不是基于数据库中的主定义构建控制树,而是加载特定于当前用户的缓存控制树。一旦您通过了 ViewState 重建,然后开始您的协调过程 - 无论是自动的还是需要加载另一个 UI 以允许用户参与都超出了问题的范围。

    关键是您需要在每个用户的基础上保留 master 的“分支”,并以更可控的方式提交和读取。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-24
      • 2010-10-13
      • 2011-01-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多