關(guān)于頁面刷新,事件重復(fù)提交的方法分享
更新時間:2012年10月11日 23:58:17 作者:
在處理頁面事件時,我們會經(jīng)常會碰到這樣的情況:當我們在提交一項頁面表單時,在提交成功后,當我們試圖按F5刷新頁面時,數(shù)據(jù)會再次的被重復(fù)提交
瀏覽器的刷新是指重復(fù)上一次向服務(wù)器發(fā)送的請求,而asp.net的服務(wù)器控件的事件都是通過postback機制向服務(wù)器發(fā)送請求的。所以,當你點擊提交按鈕后再刷新,實際上是把提交按鈕的postback請求又發(fā)送了一次。而asp.net應(yīng)用服務(wù)器是無法區(qū)別這是正常點擊按鈕添加還是f5刷新添加(這涉及到頁面生命周期。。。),那么這樣就會導(dǎo)致在數(shù)據(jù)庫里會存在n 條一模一樣的數(shù)據(jù)。
在解決這個問題的過程中,嘗試了一下幾種方法:
(1)在事件提交后,將其中的參數(shù)置空,使得程序在執(zhí)行過程中,因為沒有參數(shù)而不會做業(yè)務(wù)處理。這種處理方法沒有效果,因為服務(wù)器執(zhí)行的是上一次請求的事件,事件提交后,改變參數(shù)沒有任何意義。
(2)在事件提交后,將頁面進行重定向到當前頁面(Response.Redirect( "/basedata/PictureAdd.aspx" , true);)。因為每個頁面都具有自己的生命周期,進行重定向后,即結(jié)束了當前頁面操作。這種方法可行!
為什么在原Asp開發(fā)程序中不會碰到這樣的問題呢?我覺得是因為Asp程序主要都是將表單提交給另外一個頁面處理,并且,這個頁面處理之后,將跳轉(zhuǎn)到另外一個提示頁面。那么在Asp程序中,只需要在回退時將頁面設(shè)置為過期那么就可以有效的避免重復(fù)提交的問題。但是在Asp.Net中,基本上所有的操作都是基于事件操作,而事件的本質(zhì)上就是頁面自己提交給自己,并且頁面無法識別提交時正常操作還是重復(fù)刷新。
在解決這個問題的過程中,嘗試了一下幾種方法:
(1)在事件提交后,將其中的參數(shù)置空,使得程序在執(zhí)行過程中,因為沒有參數(shù)而不會做業(yè)務(wù)處理。這種處理方法沒有效果,因為服務(wù)器執(zhí)行的是上一次請求的事件,事件提交后,改變參數(shù)沒有任何意義。
(2)在事件提交后,將頁面進行重定向到當前頁面(Response.Redirect( "/basedata/PictureAdd.aspx" , true);)。因為每個頁面都具有自己的生命周期,進行重定向后,即結(jié)束了當前頁面操作。這種方法可行!
為什么在原Asp開發(fā)程序中不會碰到這樣的問題呢?我覺得是因為Asp程序主要都是將表單提交給另外一個頁面處理,并且,這個頁面處理之后,將跳轉(zhuǎn)到另外一個提示頁面。那么在Asp程序中,只需要在回退時將頁面設(shè)置為過期那么就可以有效的避免重復(fù)提交的問題。但是在Asp.Net中,基本上所有的操作都是基于事件操作,而事件的本質(zhì)上就是頁面自己提交給自己,并且頁面無法識別提交時正常操作還是重復(fù)刷新。
您可能感興趣的文章:
- android中ListView多次刷新重復(fù)執(zhí)行g(shù)etView的解決方法
- javascript下阻止表單重復(fù)提交、防刷新、防后退
- Asp.Net防止刷新重復(fù)提交數(shù)據(jù)的辦法
- 十分鐘內(nèi)學(xué)會 避免用戶刷新導(dǎo)致重復(fù)POST提交
- asp.net 處理F5刷新頁面重復(fù)提交頁面的一個思路
- firefox下jquery iframe刷新頁面提示會導(dǎo)致重復(fù)之前動作
- JSP刷新頁面表單重復(fù)提交問題解決辦法分享
- php環(huán)境下利用session防止頁面重復(fù)刷新的具體實現(xiàn)
- asp.net防止刷新時重復(fù)提交(可禁用工具條刷新按鈕)
- javaweb用戶注銷后點擊瀏覽器返回刷新頁面重復(fù)登錄問題的解決方法
相關(guān)文章
將Git存儲庫克隆到本地IntelliJ IDEA項目中的詳細教程
這篇文章主要介紹了將Git存儲庫克隆到本地IntelliJ IDEA項目中的詳細教程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-10-10
Kali滲透測試之使用Metasploit對Web應(yīng)用的攻擊
這篇文章主要介紹了Kali滲透測試:使用Metasploit對Web應(yīng)用的攻擊,這種漏洞源于Web應(yīng)用程序沒有對用戶輸入的內(nèi)容進行準確的驗證,從而導(dǎo)致操作系統(tǒng)執(zhí)行了攻擊者輸入的命令,需要的朋友可以參考下2022-05-05
git push 本地項目推送到遠程分支的方法(git命令版)
這篇文章主要介紹了git push 本地項目推送到遠程分支的方法(git命令版),需要的朋友可以參考下2020-09-09

