代码之家  ›  专栏  ›  技术社区  ›  dev.e.loper

视图状态错误:并发用户修改动态控件

  •  0
  • dev.e.loper  · 技术社区  · 15 年前

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

    他说:“这是一个很好的选择。” 未能加载视图状态。加载视图状态的控件树必须与在上一个请求期间用于保存视图状态的控件树匹配。例如,动态添加控件时,在回发过程中添加的控件必须与在初始请求期间添加的控件的类型和位置匹配。”

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

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

    1 回复  |  直到 15 年前
        1
  •  1
  •   Rex M    15 年前

    你需要分开 当前用户的 状态从 主人 或全局,状态。在回发时,不要基于数据库中的主定义构建控制树,而是加载特定于当前用户的缓存控制树。一旦您通过了视图状态重建,那么就启动您的调节过程——无论是自动的还是需要加载另一个用户界面来允许用户参与,这都超出了问题的范围。

    要点是,您需要以每个用户为基础保留主服务器的“分支”,并以更可控的方式提交和读取。