2010-04-29 184 views
9

我有一個ASP.net應用程序(C#)。Chrome後退按鈕頁面刷新 - ASP.net

當用戶在特定頁面上,需要點擊該頁面可將他們帶到一個孩子頁面上的鏈接,顯示產品的詳細信息。

如果用戶點擊瀏覽器的後退按鈕,我需要的父頁面被刷新到其初始狀態。即所有的數據類型的文本框需要空白,任何隱藏的領域重置等基本上我需要一個CTRL-F5時,用戶點擊回來。

禁用後退按鈕不是一個選項。

我只在某些頁面上需要它。

在IE和Firefox我能得到這個工作沒有問題。但是對於chrome,文本框仍然包含它們的值,就像隱藏字段一樣。如果我在Chrome中點擊CTRL-F5,該頁面將被正確重置爲初始狀態。

這是我試過的代碼。

<%@ OutputCache Location="None" VaryByParam="None" %> 

這:

Response.Buffer = true; 
    Response.Cache.SetCacheability(HttpCacheability.NoCache); 
    Response.Cache.SetAllowResponseInBrowserHistory(false); 
    Response.Cache.SetNoStore(); 

這:

Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1)); 
    Response.Cache.SetValidUntilExpires(false); 
    Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches); 
    Response.Cache.SetCacheability(HttpCacheability.NoCache); 
    Response.Cache.SetNoStore(); 

我也嘗試了各種各樣的這些不同的組合,但沒有成功。

感謝

+0

您使用過哪些Chrome瀏覽器?開發?測試版?穩定?視窗? – bzlm 2010-09-24 12:26:56

回答

0

的「蠻力」的解決方案將是把一些JavaScript在該網頁上加載的數據集,以一些已知的狀態在頁面上。所以它找到了所有的元素,並基於一組數據或json對象來設置數據。在初始請求中,由於無論如何都默認情況下,該設置沒有什麼區別。在後退按鈕請求上,由於javascript仍然需要運行,因此無論瀏覽器如何,它都會重置所有值。

我不相信你可以強制瀏覽器在你的描述雖然方式運作,因爲它取決於他們想如何實現一個後退按鈕每個瀏覽器 - 鉻只是它不同。

6

當按下瀏覽器的後退按鈕,輸入字段都不會自動被瀏覽器復位。相反,瀏覽器保留用戶的輸入,使用戶更容易返回並更改輸入。

你解決不了這個服務器端,因爲瀏覽器繞過緩存此。相反,您可以在輸入字段上使用autocomplete="off" HTML屬性,以防止它們被瀏覽器保留。

使用JavaScript,您也可以手動復位形式:

document.getElementById("form1").reset(); 
+1

謝謝。這並不能解釋爲什麼IE瀏覽器和Firefox看起來很爽,但不是Chrome瀏覽器。 – SetiSeeker 2010-04-29 13:01:27

+0

我猜這是Google人們的設計選擇。我仍然很高興他們支持'autocomplete'屬性作爲解決方法。 – Prutswonder 2010-04-29 13:08:16

+0

這是Chrome開發者討厭的「功能」。我花了很多時間來弄清楚我的動態表單發生了什麼(用戶可以添加新的行,在提交時將其保存到數據庫中)。在「返回」時,Chrome不會填寫之前添加的行的db id(即使我的應用程序將它輸出爲HTML),所以我的應用程序認爲所有這些行都是新的,並在進一步的提交中將它們複製。 'autocomplete =「off」'不過是這樣。 – theyetiman 2015-07-03 15:13:03

2

這兩條線解決了Chrome的問題對我來說:

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

而且我用這個可選行告訴瀏覽器不要爲同一頁面的每個請求創建一個歷史記錄:

Response.Cache.SetAllowResponseInBrowserHistory(true); 

個來源:

Most popular answer in this post

Optional line

0

你也可以把自動完成的表單標籤,而不是每個輸入字段= 「關閉」。

相關問題