Asp.net页面防止重复提交
2008-09-01 16:54
330 查看
Asp.net有一个很讨厌的特性,点击一个Button后,如果还在原来的页面的话,按F5刷新的时候会重新执行刚才的那个按钮事件,这个问题比较实用并简单的解决方法就是执行完按钮事件以后重新打开一次页面
另外一个会出现重复提交的情况是:网速比较慢的时候,点击Button可能要等个好几秒才会执行完,这时候有的用户就容易习惯性地再点几次按键,就造成了多次提交,特别是添加新信息的时候,程序中无法判断哪条信息是正常的,哪条是误点击提交的,于是就会全部添加到数据库里面。这种错误信息在开发的时候很难检查出来,因为本地运行程序都比较快,传到服务器上时才会出现这样的问题。有人说在客户端JS代码中把Button禁用掉,如下所示:
后台的Page_Load中添加
btnSend.Attributes["onclick"] = "return checkForm();";
貌似非常完美的解决方法,但经过测试,这种方法根本行不通,这个时候客户的请求并没有提交,在客户端JS代码中把按钮给禁用了,于是客户的请求就永远也提交不了了。
今天中午调试程序,又碰到这个问题,不经意间想起了如下解决方法,不妨一试,原理如下:
页面中放一个隐藏的变量来标识是否已经进行过提交,点击Button的时候根据此变量的值来判断是否是第一次点击,是的话,改变变量的值,并允许提交请求,否则的话提示用户不能重复提交,并返回False。
代码如下:
页面中添加一个HiddenField,ID为"submitted",然后添加如下JS代码:
function checkForm()
{
if(document.getElementById("submitted").value == "submit")
{
alert("您的请求正在处理中,请不要重复提交");
return false;
}
document.getElementById("submitted").value = "submit";
return true;
}
后台Page_Load中添加:
btnSend.Attributes["onclick"] = "return checkForm();";
简单测试,OK
下面是在网上看到的两个方法,标记一下,有空试试
解决方法一:
.Framework2.0中才有的button属性:
解决重复提交:OnClientClick="this.disabled=true;this.form.submit();" UseSubmitBehavior="False"
解决方法二:
this.btnSubmit.Attributes["onclick"] = this.GetPostBackEventReference(this.btnSubmit) + ";this.disabled=true;"; //防止重复提交
另外一个会出现重复提交的情况是:网速比较慢的时候,点击Button可能要等个好几秒才会执行完,这时候有的用户就容易习惯性地再点几次按键,就造成了多次提交,特别是添加新信息的时候,程序中无法判断哪条信息是正常的,哪条是误点击提交的,于是就会全部添加到数据库里面。这种错误信息在开发的时候很难检查出来,因为本地运行程序都比较快,传到服务器上时才会出现这样的问题。有人说在客户端JS代码中把Button禁用掉,如下所示:
后台的Page_Load中添加
btnSend.Attributes["onclick"] = "return checkForm();";
貌似非常完美的解决方法,但经过测试,这种方法根本行不通,这个时候客户的请求并没有提交,在客户端JS代码中把按钮给禁用了,于是客户的请求就永远也提交不了了。
今天中午调试程序,又碰到这个问题,不经意间想起了如下解决方法,不妨一试,原理如下:
页面中放一个隐藏的变量来标识是否已经进行过提交,点击Button的时候根据此变量的值来判断是否是第一次点击,是的话,改变变量的值,并允许提交请求,否则的话提示用户不能重复提交,并返回False。
代码如下:
页面中添加一个HiddenField,ID为"submitted",然后添加如下JS代码:
function checkForm()
{
if(document.getElementById("submitted").value == "submit")
{
alert("您的请求正在处理中,请不要重复提交");
return false;
}
document.getElementById("submitted").value = "submit";
return true;
}
后台Page_Load中添加:
btnSend.Attributes["onclick"] = "return checkForm();";
简单测试,OK
下面是在网上看到的两个方法,标记一下,有空试试
解决方法一:
.Framework2.0中才有的button属性:
解决重复提交:OnClientClick="this.disabled=true;this.form.submit();" UseSubmitBehavior="False"
解决方法二:
this.btnSubmit.Attributes["onclick"] = this.GetPostBackEventReference(this.btnSubmit) + ";this.disabled=true;"; //防止重复提交
相关文章推荐
- asp.net防止页面刷新或后退引起重复提交
- 移动项目开发笔记(asp.net防止页面刷新引起重复提交数据)
- asp.net 防止页面刷新重复提交的小技巧
- asp.net防止页面重复提交
- asp.net防止页面刷新或后退引起重复提交
- asp.net页面防止按钮重复提交的小技巧
- ASP.NET如何防止页面重复提交
- ASP.Net中防止页面刷新重复提交的几种方法
- ASP.NET如何防止页面重复提交
- ASP.Net中防止页面刷新重复提交的几种方法
- ASP.Net中防止页面刷新重复提交的几种方法
- asp.net清除页面缓存,防止页面回退重复提交数据及防止同一用户同时登录
- ASP.NET中防止页面刷新造成表单重复提交执行两次操作
- ASP.NET中防止刷新页面造成表单重复提交
- ASP.Net中防止页面刷新重复提交的几种方法
- ASP.Net中防止页面刷新重复提交的几种方法
- ASP.NET中防止刷新页面造成表单重复提交
- asp.net 防止页面刷新或后退引起重复提交
- ASP.NET中防止页面刷新造成表单重复提交执行两次操作
- asp.net清除页面缓存,防止页面回退重复提交数据及防止同一用户同时登录