2009-10-26 41 views
0

有一個動態添加控件的頁面。正在從數據庫檢索控制狀態,並在回發時將控件重新添加到頁面。用戶可以通過UI添加/刪除控件。當兩個用戶在同一頁面上,並且添加/刪除控件時,下次他嘗試修改控件狀態時,另一個用戶將收到ViewState錯誤。ViewState錯誤:併發用戶修改動態控件

加載視圖狀態失敗加載視圖狀態的控件樹必須與前一個請求期間用於保存視圖狀態的控件樹相匹配例如,當動態添加控件時, -back必須與初始請求期間添加的控件的類型和位置相匹配。「

這是因爲當繪製頁面時,我使用了一組控件,並且由於控件狀態被不同的用戶修改了,所以我在回發上得到了一組不同的控件。

我明白錯誤發生的原因,但我想我錯過了一些東西。有沒有辦法讓頁面動態添加控件,並可以處理修改控件狀態的併發用戶?

回答

1

您需要將當前用戶的狀態與主節點或全局狀態分開。回發時,不是基於數據庫中的主定義構建控制樹,而是加載特定於當前用戶的緩存控制樹。一旦通過ViewState重建,然後啓動對帳流程 - 無論是自動還是需要加載其他用戶界面以允許用戶參與都不在問題範圍之內。

問題是,您需要保持每個用戶的主分支「分支」,並提交併以更受控制的方式讀取。