2015-02-09 54 views
1

我有一個ASP.NET WebForms應用程序處理髮布的請求,並通過JavaScript警報(通過ClientScript.RegisterStartupScript ...)向用戶顯示一條消息。在客戶端代碼執行後的某個時間點刷新頁面,當然我得到了「要顯示此頁面,Firefox必須發送信息,以便重複之前執行的任何操作(例如搜索或訂單確認)」其他瀏覽器中的或類似的。發佈/重定向/獲取警報給用戶?

現在,我知道Post/Redirect/Get模式,但如果我在發佈後立即重定向 - 我無法顯示JS警報。有沒有辦法顯示警報並執行服務器端重定向?我知道我可以添加一個特定的查詢字符串來重定向URL,在頁面加載時檢查它,並顯示警報,如果存在,但這意味着如果重定向頁面被刷新 - 我會再次得到該警報,這是不可取的。有沒有辦法做到這一點,不會涉及複雜的雜亂旗幟?

回答

1

TempData ASP.NET MVC旨在用於重定向。如果您在那裏存儲消息,您將能夠檢查並在重定向後顯示。如果刷新頁面,則該值不會被持續,因此不會再次可見,補充了PRG模式。

我已經看到了它實現爲擴展ActionResults,像FunnelWeb博客來源:

https://github.com/funnelweblog/FunnelWeb/blob/f28d1b1cb9c86e492f120948309de68c12141222/src/FunnelWeb.Web/Application/Mvc/MvcExtensions.cs

對的WebForms,我認爲唯一的選擇就是使用Session和訪問後清除它,雖然你應該能夠創建一個包裝圍繞它,就像在上面的鏈接,其功能以同樣的方式:

equivalent of ASP.NET MVC TempData in ASP.NET

+1

我不認爲TempData的是在WebForms的可用pplication。除非我錯了? – 2015-02-09 21:00:04

+0

道歉 - 錯過了。我認爲Session是唯一的選擇!我已經添加了一些我的答案。 – 2015-02-09 21:05:24

+1

謝謝。我通常儘量避免使用Session來處理這些場景,但它看起來似乎是唯一可行的解​​決方案。 – 2015-02-09 21:26:28