0

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

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

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

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

4

1 回答 1

1

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

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

于 2009-10-26T18:14:51.933 回答