假設我們有兩個頁面:pageX.aspx和pageY.aspx。這些頁面利用瀏覽器頂部的主頁面,用戶可以通過多個選項來更改網站的語言。這些語言選擇採用圖像按鈕(國家/地區標誌)的形式,但它們不使用PostbackUrl屬性。相反,他們只是使用事件處理程序。一種這樣的圖像處理程序:PostbackUrl與母版頁
protected void imgbtnEnglish_Click(object sender, ImageClickEventArgs e)
{
HttpCookie aCookie = new HttpCookie("language");
aCookie.Value = "en-US";
aCookie.Expires = DateTime.Now.AddDays(365);
Response.Cookies.Add(aCookie);
Response.Redirect(Request.RawUrl);
}
pageX.aspx包含圖像按鈕,它具有性質PostbackUrl="pageY.aspx"
。此圖像按鈕的唯一目的是帶我們到pageY.aspx。
當按下該圖像按鈕時,如預期的那樣,我們被帶到pageY.aspx。當我在瀏覽器中按下BACK(不是控件或任何東西,只是很好的舊後退按鈕)時,我會回到pageX.aspx,這太棒了!...回到頂端這篇文章中的信息適用於:除了貌似,頂級的主頁認爲我仍然在pageY.aspx!因爲即使我現在回到了我的屏幕上的pageX.aspx,點擊頂部的任何一個標誌都會將我帶回pageY.aspx!
我可以邏輯推論的唯一的事情是,由於某種原因,因爲它是PostbackUrl,並且它將表單提交給服務器,所以「返回」僅在本地被識別爲發送的表單,而不是整個頁面(包括母版頁)。因此,通過「返回」,我實際上只在表單中「返回」,而不是表單AND主頁面。
我所做的解決我的問題,是使圖像按鈕,帶我去pageY.aspx沒有使用一項PostBackUrl,而是一個Click事件處理一個行:的Response.Redirect(「pageY。 ASPX「);當我這樣做,它工作正常。
我想明白爲什麼會發生這種情況,並且如果Click事件處理程序解決方案是最佳實踐/合適解決方案而不是使用PostbackUrl屬性。
您是否使用Opera瀏覽器? –
哈,確實是我!!我猜你的問題是,它可能是一個瀏覽器特定的東西? – CptSupermrkt
是的,它是特定於瀏覽器的。關於爲什麼我認爲它是歌劇的全部細節在我的答案如下 –