ASP.NET 多次提交的解决办法2
程序员文章站
2023-11-17 15:01:28
例如: protected void page_load(object sender, eventargs e) { //.net1.1 button1.attribute...
例如:
protected void page_load(object sender, eventargs e)
{
//.net1.1
button1.attributes.add("onclick", "this.disabled=true;" + this.getpostbackeventreference(this.button1));
//.net 2.0以上
button1.attributes.add("onclick", "this.disabled=true;" + this.clientscript.getpostbackeventreference(button1, ""));
}
为了测试,我们可以建立一个页面,加入一个btnadd按钮
<%@ page language="c#" autoeventwireup="true" codefile="addandedituser.aspx.cs" inherits="adduser" %><html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>添加和编辑页面示例</title>
</head>
<body>
<form id="frmmain" runat="server">
<asp:button id="btnadd" runat="server" cssclass="input-button-save" onclick="btnadd_click">
</asp:button>
</form>
</body>
</html>
/*----------------------------------------------------------------
using system;
using system.collections;
using system.configuration;
using system.data;
using system.linq;
using system.web;
using system.web.security;
using system.web.ui;
using system.web.ui.htmlcontrols;
using system.web.ui.webcontrols;
using system.web.ui.webcontrols.webparts;
using system.xml.linq;
public partial class adduser : system.web.ui.page
{
protected void page_load(object sender, eventargs e)
{
btnadd.attributes.add("onclick", "this.disabled=true;" + this.clientscript.getpostbackeventreference(btnadd, ""));
}
protected void btnadd_click(object sender, eventargs e)
{
//模拟网络拥塞5秒钟
system.threading.thread.sleep(5000);
}
}
可见当点击了按钮,需要等5秒钟按钮才能点击。即页面回发一后按钮才能用。这样可以有效的防止用户多次点击按钮,造成多次提交!
protected void page_load(object sender, eventargs e)
{
//.net1.1
button1.attributes.add("onclick", "this.disabled=true;" + this.getpostbackeventreference(this.button1));
//.net 2.0以上
button1.attributes.add("onclick", "this.disabled=true;" + this.clientscript.getpostbackeventreference(button1, ""));
}
为了测试,我们可以建立一个页面,加入一个btnadd按钮
<%@ page language="c#" autoeventwireup="true" codefile="addandedituser.aspx.cs" inherits="adduser" %><html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>添加和编辑页面示例</title>
</head>
<body>
<form id="frmmain" runat="server">
<asp:button id="btnadd" runat="server" cssclass="input-button-save" onclick="btnadd_click">
</asp:button>
</form>
</body>
</html>
/*----------------------------------------------------------------
using system;
using system.collections;
using system.configuration;
using system.data;
using system.linq;
using system.web;
using system.web.security;
using system.web.ui;
using system.web.ui.htmlcontrols;
using system.web.ui.webcontrols;
using system.web.ui.webcontrols.webparts;
using system.xml.linq;
public partial class adduser : system.web.ui.page
{
protected void page_load(object sender, eventargs e)
{
btnadd.attributes.add("onclick", "this.disabled=true;" + this.clientscript.getpostbackeventreference(btnadd, ""));
}
protected void btnadd_click(object sender, eventargs e)
{
//模拟网络拥塞5秒钟
system.threading.thread.sleep(5000);
}
}
可见当点击了按钮,需要等5秒钟按钮才能点击。即页面回发一后按钮才能用。这样可以有效的防止用户多次点击按钮,造成多次提交!
推荐阅读
-
Outlook邮件超过2G时出现错提示:0x800C0133的解决办法
-
asp.net浏览器向服务器提交json格式的数据
-
迅雷下载到99.9%时一直显示连接资源下载速度为0的2种解决办法
-
Mac中体验ASP.NET 5 beta2的K gen代码生成
-
ASP.NET Web Api 2实现多文件打包并下载文件的实例
-
Outlook邮件中的网页链接无法打开的2种解决办法
-
ASP.NET MVC实现多个按钮提交的方法
-
asp.net下用url重写URLReWriter实现任意二级域名的方法第1/2页
-
ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统之前端页面框架构建源码分享
-
Visual Studio 2017下ASP.NET CORE的TagHelper智能提示解决办法