2012-07-11 292 views
1

我有一個在Visual Studio 2010中創建的ASP.NET項目。所以開始項目時,我得到了通用的「MY ASP.NET APPLICATION」頁面。我已經刪除了所有這些通用內容,並且正在根據用戶的需求構建應用程序。Asp.Net在瀏覽器上點擊後退按鈕時強制Page_Load

在我的default.aspx頁面上,我有一個datagrid包裹在UpdatePanel中。當用戶從datagrid中選擇一行時,我將導航到新頁面。一切工作正常,但如果用戶點擊瀏覽器中的後退按鈕,它就好像是從舊緩存版本加載頁面,因爲它再次顯示通用「MY ASP.NET應用程序」頁面。

我已經研究了一段時間,一切都表明,如果你告訴Response不使用緩存,它會強制Page_Load,如果用戶點擊後退按鈕。但是,這樣做並不適合我。如果我點擊刷新按鈕或鍵入F5,那麼我的頁面將成功重新加載。我使用IE9和這裏是我在我的母版頁的Page_Load曾嘗試:

 Response.Cache.SetExpires(DateTime.Now.AddDays(-1)); 
     Response.Cache.SetValidUntilExpires(false); 
     Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches); 
     Response.Cache.SetCacheability(HttpCacheability.NoCache); 
     Response.Cache.SetNoStore(); 
     Response.Expires = -1441; 
     Response.ExpiresAbsolute = DateTime.Now.AddDays(-1); 
     Response.AppendHeader("pragma", "no-cache"); 
     Response.CacheControl = "No-cache"; 
     Response.AddHeader("cache-control", "no-store, no-cache, must-revalidate"); 

而且,我試着在母版頁的腳本插入這樣的:

<meta http-equiv="Expires" content="0"/> 
<meta http-equiv="Cache-Control" content="no-cache"/> 
<meta http-equiv="Pragma" content="no-cache"/> 
+0

也許這在你的文檔的開始會有幫助嗎? http://stackoverflow.com/a/11341116/109749 – jcolebrand 2012-07-11 20:42:42

回答

1

今天早上想通了。原來,這只是使用Ajax時的另一個問題。當用戶在數據網格中選擇一行時,我沒有在重定向到新頁面之前添加歷史點。所以我只需要在scriptmanager上做一個AddHistoryPoint,然後再進行重定向,所有的都在附近。

0

有我想兩件事情從...開始。

首先,在瀏覽器中,我會轉到Internet選項>瀏覽歷史記錄設置。如果「檢查存儲頁面的較新版本」設置爲「從不」,我會將其移至「自動」。第二,我會看看實際的文件系統(不在Visual Studio中,使用文件資源管理器),看看該文件是否確實還在那裏。如果是這樣,我會刪除它。

+0

我試圖改變我的設置在Internet選項,並沒有奏效。此外,該文件在文件系統中也不存在。 – 2012-07-11 21:20:09

相關問題