2014-01-29 25 views
2

如何在重新提交後限制以前的操作。例如,如果我點擊一個按鈕,如果我重新提交(f5)該頁面將刷新,無論我們以前點擊按鈕將再次執行。所以我不想再次執行。那麼你能幫我解決這個問題嗎?c中的重新提交限制#

+0

這是另一個問題的兩部分嗎?我錯過了一些信息。代碼不起作用的地方是這個winforms或webforms?如果這是ASP.NET有很多[重複](http://stackoverflow.com/questions/12353461/how-to-prevent-data-from-sending-if-user-press-f5-or-refresh- in-asp-net)(或http://stackoverflow.com/questions/3759572/avoid-form-re-submit或http://stackoverflow.com/questions/2526568/asp-net-prevent-form-submission-兩次)。 –

回答

3

你應該閱讀有關PRG模式

郵政/重定向/獲取(PRG)是一個Web開發設計模式 防止一些重複的表單提交,創造一個更直觀的 接口,用於用戶代理(用戶)。 PRG以可預測的方式實現書籤和刷新按鈕,不會創建表單提交的重複 。

更多關於此here

的工作方式簡短解釋:

當一個Web表單通過HTTP POST請求提交到服務器, 試圖刷新某些 用戶代理服務器響應網絡用戶可以導致原始HTTP POST請求 的內容被重新提交,可能導致不希望的結果,例如 重複的網絡購買。爲避免此問題,許多Web開發人員使用 PRG模式1 - 而不是直接返回網頁,POST操作返回重定向命令。

1

您可以考慮將用戶重定向到另一個網頁,以便後續請求使用GET進行。

這裏的目標是加載提交操作頁面的行爲是導致瀏覽器在刷新時重新提交的原因。畢竟,你實際上是在第二次請求同一個提交動作。通過重定向到另一個頁面,您的請求現在將使用GET完成,並且加載的頁面將不會是執行提交邏輯的頁面。

這也被稱爲Post/Redirect/Get pattern