我正在開發Web應用程序。我有一個向用戶顯示數據的網格。當用戶點擊網格的任何一行時,它會將用戶重定向到另一個頁面,因爲我們在一列上有一個asp鏈接控件。 問題在asp.net中回發和瀏覽器後退按鈕問題
我的代碼是這樣
if (!Page.IsPostBack)
{
//CODE
}
當在瀏覽器後退按鈕的用戶點擊,它不執行代碼。只需顯示來自CACHE的數據。 如何在瀏覽器後退按鈕上單擊執行CODE?
我正在開發Web應用程序。我有一個向用戶顯示數據的網格。當用戶點擊網格的任何一行時,它會將用戶重定向到另一個頁面,因爲我們在一列上有一個asp鏈接控件。 問題在asp.net中回發和瀏覽器後退按鈕問題
我的代碼是這樣
if (!Page.IsPostBack)
{
//CODE
}
當在瀏覽器後退按鈕的用戶點擊,它不執行代碼。只需顯示來自CACHE的數據。 如何在瀏覽器後退按鈕上單擊執行CODE?
這是ASP.Net的全球性問題。大多數開發人員認爲像Windows開發人員。它主要以任何操作(包括導航操作)的回傳結束。
爲了解決這樣的問題:
此「惡意」行爲的根本原因是使用HTTP Post請求發佈回發。然後,瀏覽器需要重新發布頁面以重建它。
使用上面提到的技術,您正在發出GET請求。這種請求不需要重新提交任何內容。
嘗試禁用不想緩存的頁面的瀏覽器緩存。
protected void Page_Load(object sender, EventArgs e)
{
Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1));
Response.Cache.SetValidUntilExpires(false);
Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();
if (!Page.IsPostBack)
{
//CODE
}
}
downvoting的原因: 同意我們不使用回傳導航的部分。其餘的有點不符合整個asp.net框架的想法,它確實[嘗試]功能像winforms開發,我們在回發中做我們的行動.... –