ASP.NET防止按F5鍵造成表單重複提交

來源:互聯網
上載者:User
F5鍵會引起表單重複提交,做過asp.net相信都會遇到過這個問題。

  最有效是一篇發表在MSDN的方法

  原理如下:

    在asp.net頁面中有一個名為_VIEWSTATE的隱藏欄位,這個隱藏欄位儲存著當前頁面中控制項的檢視狀態,如果是通過提交按鈕提交或者頁面回傳,這個隱藏欄位的值會改變,但是如果是通過按瀏覽器的F5鍵重新整理,則這個隱藏欄位的值不會改變。

    通過上述的原理,我們只需在頁面儲存上一次隱藏欄位的值,然後再頁面執行時判斷對比當前隱藏欄位的值,就可以知道用戶端是通過哪種方式來執行資料提交。

  但是這種方法的弊端也很明顯:

    伺服器端需要每次儲存額外的資料,要每次擷取隱藏欄位的值,必須通過HttpModule攔截,這樣勢必影響應用程式的其他部分,因為HttpModule是全域性的,經過測試,圖片顯示不了,使用的第三方的JavaScript庫會失去作用。

    前段時間看到了新的方法。

  通過判斷Request中的Header資訊,可以達到防止表單重複提交 這兩次請求都成功了,但你仔細觀察Headers中的Accept的值,你會發現第一次通過提交按鈕提交的時候, Accept反應的是當前用戶端環境下可以接受的多媒體類型,但是第二次通過按F5重新整理提交的時候的,它的值變成了 */* ,表示所有的。

  因此,通過判斷Request.Headers["Accept"] != "*/*" 就可以達到我們想要的效果。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.