2012-04-04 46 views
0

我有使用多視圖的頁面。每個視圖包含一個單獨的用戶控件。其中一個用戶控件具有帶有圖像按鈕的列表視圖,該按鈕可導致在多視圖中加載不同的視圖。在此之前一切都很好。當用戶點擊後退按鈕時,它們將被帶回包含列表視圖的用戶控件。然後用戶點擊另一個圖像按鈕查看不同的數據,並使用與之前相同的數據返回到詳細用戶控件。在調試時,我看到在點擊後退按鈕後,item命令事件不會觸發。listview itemcommand在後退按鈕後不開火

我試着更換多視圖並將每個用戶控件放入單獨的面板中。這完全沒有改變結果。

我試着設置一個cookie,頁面加載5秒後過期。當用戶繼續到下一頁,然後點擊返回(並且它已經超過5秒),我強制表單再次提交。這會再次加載下一個控件,而不是重新加載頁面。

我已經嘗試將緩存設置爲無緩存。這會導致「頁面過期」消息,用戶必須刷新頁面。這對用戶來說很難看,並且絕對會帶走用戶體驗。

我正在尋找最簡潔的方式讓用戶點擊並重新加載頁面,以便item命令事件再次正確觸發。

回答

0

找了這個答案花了很多研究,所以希望別人偶然發現這個問題並找到我的答案。我很驚訝我實際上能夠找到這個。好吧,足夠的幸福。

由於當用戶單擊後退按鈕時頁面不回發,因此不會正確觸發事件,導致下一頁出現問題。必須發生的是你需要能夠處理瀏覽器的導航按鈕(即後退和前進)。爲此,您必須在腳本管理器中將EnableHistory設置爲true,並從腳本管理器處理Navigate事件。然後,您可以使用保存在狀態對象中的信息重新加載控件。

我在DotNetSlackers.com上用Dino Esposito的這些文章作爲參考。 Server Side History ManagementClient Side History Management

0

原因是Back不會影響Page Life Cycle。這絕對是因爲頁面被緩存,並且緩存頁面不會在服務器上執行。你可以試試這個代碼來擺脫這個問題。

Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();

+0

我試過這個,但是這迫使用戶重新加載頁面而不是讓頁面自己做。這個過程需要無縫。用戶不應該被打斷。他們所需要做的就是回擊,並讓頁面重新加載,而無需他們做一件事。 – fizch 2012-04-04 19:04:32