2012-04-15 138 views
0

我有一個擁有母版頁和多個普通頁面的asp.net網站。主頁面上有一個菜單欄,用戶可以選擇普通頁面。我有一個普通頁面的Page_Load事件中的代碼。問題是,這個事件似乎只觸發一次 - 用戶第一次導航到頁面。如果用戶導航到另一個頁面,然後再返回,則該事件不會觸發。誰能告訴我我做錯了什麼?Page_Load事件只會觸發一次

+0

頁面是否緩存在瀏覽器中?如果是這樣,它不會再次從服務器加載,你的'page_load'不會被解僱。 – Oded 2012-04-15 19:35:59

+0

根據您的IIS設置,頁面被瀏覽器緩存並且不會返回到服務器的機會很大。 (尤其如果使用後退按鈕導航到前一頁)。當您將唯一的QueryString變量添加到URL的末尾時會發生什麼? 'somepage.aspx - > somepage.aspx?2' – leepowers 2012-04-15 19:44:04

回答

0

看來,問題是由瀏覽器緩存引起的該頁面,謝謝你指出我在正確的方向。

這個問題不僅在使用後退按鈕時出現,所以我害怕防範這個問題並不能解決問題。

我的解決方案是用服務器端asp.net按鈕控件替換我用於菜單的簡單html超鏈接。當後面的代碼執行response.redirect時,目標頁面的page_load事件似乎每次都會執行。

+0

其實,我找到了一個更好的方法。簡單地將以下內容添加到page_load事件可防止頁面被緩存:Response.Cache.SetCacheability(HttpCacheability.NoCache); – 2012-04-18 18:39:50

1

如果用戶用戶Back瀏覽器瀏覽器的按鈕將使用緩存版本的頁面,如果您的頁面正常並且沒有應用特定設置。這些代碼會導致如果用戶使用Back按鈕沒有顯示他/她:

​​

或爲prvent用戶回去使用此代碼:

<body onLoad="if(history.length>0)history.go(+1)">