2009-10-26 40 views
0

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

加载视图状态失败加载视图状态的控件树必须与前一个请求期间用于保存视图状态的控件树相匹配例如,当动态添加控件时, -back必须与初始请求期间添加的控件的类型和位置相匹配。“

这是因为当绘制页面时,我使用了一组控件,并且由于控件状态被不同的用户修改了,所以我在回发上得到了一组不同的控件。

我明白错误发生的原因,但我想我错过了一些东西。有没有办法让页面动态添加控件,并可以处理修改控件状态的并发用户?

回答

1

您需要将当前用户的状态与主节点或全局状态分开。回发时,不是基于数据库中的主定义构建控制树,而是加载特定于当前用户的缓存控制树。一旦通过ViewState重建,然后启动对帐流程 - 无论是自动还是需要加载其他用户界面以允许用户参与都不在问题范围之内。

问题是,您需要保持每个用户的主分支“分支”,并提交并以更受控制的方式读取。