2011-12-20 72 views
2

Move backward through history skipping the same page with different query string後退按鈕歷史:跳繩頁面發佈後

以上是類似我的問題,但像我關注帖子中,我會更具體:

情景: 用戶在產品上市頁。 (Shorts.aspx) 用戶選擇一個產品並導航到產品詳情頁(最佳卸貨Shorts.aspx) 用戶點擊添加到購物車執行形式的回傳(POST),以相同的頁面。 (Best-Cargo-Shorts.aspx) - 此時再次顯示詳細信息頁面,但頂部有一個添加到購物車的消息。

當前行爲: 在添加到購物車表單後;當用戶點擊後退按鈕時,他們會回到同一頁面的「前後」版本。

願望: 當用戶點擊返回按鈕,我想它去Shorts.aspx,不最佳貨運-Shorts.aspx,有效地跳過了「崗前」頁面,或者更準確地說,不存儲第二張張頁面(Best-Cargo-Shorts.aspx)。

此外,我總是希望避免「Page Content Expired」消息。我只是從來不想在歷史中發佈頁面的版本。通過這種方式,以下情況也是如此。

Shorts.aspx>最佳卸貨Shorts.aspx>最佳卸貨Shorts.aspx [POST]>Cart.aspx

如果在購物車和返回按鈕被按下,我希望瀏覽器導航至Best-Cargo-Shorts.aspx(不含POST)。

這可能與C#?此外,有沒有一個非JavaScript的解決方案?

謝謝。

+1

讚美你!沒有足夠的人關心他們的網站是否缺少JavaScript。 – 2011-12-20 01:00:04

回答

0

處理此問題的一種常用方法是Post-Redirect-Get pattern

在本質上,一個POST請求的目標總是與303查看其它響應(如果HTTP 1.1)或302臨時移動(如果HTTP 1.0)狀態代碼重定向請求作爲GET,通常消除過期歷史記錄中的POST頁面。潛在的缺點包括表單參數可能仍然作爲查詢字符串連接到GET,我不知道它將(或不會)與ASP.Net Forms,MVC或其他Web框架集成的性能如何。

+0

https://stackoverflow.com/a/9497555/462781 – Pete 2017-09-06 07:13:12

0

通常,您應該使用post-redirect-get模式,即在用戶使用POST將項目添加到卡片後,將其重定向到302. 現在您的問題是,我會爲該帖子使用Ajax。我不能想到一個跨瀏覽器的方式來只使用服務器端代碼來實現所需的行爲。