2009-06-02 60 views
1

我有一個頁面,當用戶想要創建一個新的或編輯一個現有文檔時,他會顯示出來。在頁面上有兩個用戶控件。一個簡單的DatePicker和一個更復雜的網格。在填寫或編輯數據後,他可以按繼續,將其帶到審查頁面,在那裏他可以決定真正創建或更新文檔,或返回並更改內容。回去完成javascript與history.back()返回瀏覽器時,什麼會導致頁面失去視圖狀態?

現在,當用戶處於「新」模式,並決定從審查頁返回時,網格部分失去其視圖狀態和DatePicker完全失去它。

另一方面,當用戶處於「編輯」模式並從審閱頁返回時,兩個控件都保持其視圖狀態。

我知道瀏覽器只顯示緩存版本的「新/編輯」頁面。但爲什麼控制狀態的差異以及我能做些什麼以使它在兩種情況下都能正常工作?

回答

2

Viewstate本質上是一個隱藏字段,它的形式是填充了已發佈回服務器的控件值。

如果用戶在窗體的控件中輸入或選擇了一些值,執行回發,然後按下瀏覽器的後退按鈕或執行javascript history.back(),則您正在查看頁面,因爲它在回發發生之前。因此,在回發之前用戶做出的選擇將不會出現在頁面上。

「新建」和「編輯」之間的區別在於,在「編輯」中,您正在從數據庫檢索信息以填充控件。

而不是做javascript history.back(),你應該看看使用Wizard control。嚮導控件是專門爲此目的而設計的。如果用戶通過多個步驟輸入信息,轉到審閱頁面並需要返回一個步驟或返回到第一步,則Viewstate中將保留所有內容。

+0

對於長時間的延遲感到抱歉。不完全是我想聽到的答案,但確實爲我的問題提供瞭解決方案。 – Thomas 2009-07-17 09:18:19

相關問題