2012-02-01 55 views
1

儘管我完全意識到禁用後退按鈕並不是網站的理想特徵,但它可能是目前最簡單的解決方案。在工作中,我的工作截止日期已經提前,如果更容易想知道是否有一種簡單的方法可以在應用程序進程中禁用歷史緩存。我完全打算建立回去的能力,但我現在沒有時間,並希望避免可能出現的一些問題。爲MVC3中的應用程序禁用瀏覽器歷史記錄

所以,雖然我完全知道後退按鈕是你的,但我怎樣才能讓你的後退按鈕回到你開始應用程序之前,因此需要重新啓動(或任何最好的情況在此糟糕的情況)。

我希望這是有道理的,我已經閱讀了從使用頁面代碼後的其他帖子,但沒有看到任何與C#和MVC3相關的帖子。所以請不要因爲需要而激怒我......這是一個臨時的樂隊援助!

我的理想解決方案是,當他們點擊後退按鈕時,他們會在開始應用程序之前返回到頁面。這將有希望保持他們以前的歷史,但保持應用程序不中斷,直到我可以建立措施來捕捉和處理這個問題。

+0

使用AJAX?將整個''轉換到一個容器中,並使用JS注入點擊事件,基本上劫持了預期的「前進」機制,並通過ajax調用重新路由它,該調用將自己填充「」標籤。 (雖然可以說你最好能夠完成工作,而不是想辦法在通行證上堅持下去)。 – 2012-02-01 02:42:45

+0

但是我曾考慮過這個,因爲你暗示重寫使用ajax會有點反作用。如果我找不到解決方案,那麼在我編寫處理該問題所需的其他代碼時,它只會有幾天破壞的可能性。另一件我曾考慮過的事情是在表中添加一個字段,一切引用存儲最後完成的步驟,然後檢查頁面加載和重定向,如果需要與js(我在類的包裝上有一個noshow元素,所以他們不會看到任何東西,如果他們禁用js)。 – Jared 2012-02-01 02:49:37

+0

我會努力尋求解決方案,但要提前解決這個缺陷。根據情況,您可能會建議他們查看是否有其他事件觸發了錯誤(我認爲您的頭腦中有一組導致問題的步驟,也許您的最終用戶可以找到其他情況並允許您編寫一個甚至更好的最終解決方案)。 – 2012-02-01 02:53:55

回答

1

瀏覽器歷史記錄的最終目的是使用AJAX。這允許你在服務器上發送/接收數據,而客戶端沒有「返回」選項。您可以使用Microsoft爲其演示MVC應用程序之一採用的方法實現該功能,並允許每個視圖都以「ajax」參數接收。找到後,它會返回頁面的PartialView(再少一些標題),然後您可以使用它來填充常見的內容元素(例如頁面上的<body> or`元素)。

然而,這可以說是更多的工作來實現,然後解決原來的問題。我可能會跟蹤他們在哪個階段(我提到了會話,無論您是否提到了使用數據庫),然後根據該值在「正確」路徑上允許或轉發它們。這給你更多的靈活性,更容易實現(及時),並保持服務器級別的所有驗證。 可能唯一真正的問題是某些瀏覽器會緩存結果,因此即使服務器已返回進程,您也可能無法在服務器上重新獲取數據。如果是這樣的話,你可以只做這個嚮導式的AJAX頁面部分,並且不要觸及網站的其他部分,這將有效地強制它們沿着正確的路徑前進。

+0

就這樣知道。我決定使用數據庫而不是會話的原因是,我可以輕鬆容易地讓他們「爲以後保存」或類似的東西,並通過電子郵件向他們發送鏈接以恢復應用程序。此外,由於這是該公司的新功能,所使用的表除了測試數據之外沒有任何數據,因此將其清除/更改/不管什麼都沒有什麼大不了的。所以考慮到這一點,我選擇了db路由會話。此外,我計劃在應用程序的第一個屏幕上進行ajax調用,並驗證SSN並在應用程序存在時恢復。 – Jared 2012-02-01 19:38:13

相關問題