关于asp.net下按钮点击后禁用问题

sky0813 2019-05-15 10:49:26
最近发现外网慢时一些表单提交,被用户重复提交,导至有重复数据,这样数据就会产生问题。
一开始想到的是点击button时,第一行代码写入 enabled false ,但发现并不能阻止重复提交问题。
后面参考网上:https://m.jb51.net/article/24896.htm
但是不能执行btnTest2 的代码。请问问题出在哪里?

前台:
<script type="text/javascript" src="Scripts/jquery-1.4.1.min.js"></script>
<script type="text/javascript">
function enableButton(flag) {
$("#btnTest").attr("disabled", flag? "" : "disabled");
}
$(document).ready(
function () {
$("#btnTest").click(
function () {
enableButton(false);
$("#btnTest2").click();//禁用掉自身并调用真正触发回发的按钮的click事件
}
);
}
);
</script>

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

<div>
<input type="button" value="点击后禁用" id="btnTest" />
<asp:Button ID="btnTest2" Text="点击后禁用" runat="server" OnClick="btnTest2_Click" style="display:none"/>
</div>
后台:
Protected Sub btnTest2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnTest2.Click
TextBox1.Text = "这里有很多代码,现在是用做测试"
End Sub
...全文
375 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
epui2008 2019-05-23
  • 打赏
  • 举报
回复
重复提交 ,光禁用按钮是不行的,需要从数据监测上把控,只是通过js禁用按钮 那是自欺欺人
lin437922751 2019-05-20
  • 打赏
  • 举报
回复
js入手的话,建议搜索throttle这个关键词。
正怒月神 版主 2019-05-17
  • 打赏
  • 举报
回复
在button禁用时, 后台也要加上幂等处理。
游北亮 2019-05-17
  • 打赏
  • 举报
回复
参考文章: https://blog.csdn.net/youbl/article/details/78240528 提供了2个方案,1个是类似你写的禁用button的,但是是使用全局变量, 另1个是使用cookie的方案。
秋的红果实 2019-05-17
  • 打赏
  • 举报
回复
引用 7 楼 sky0813 的回复:
[quote=引用 6 楼 秋的红果实 的回复:] 因web程序和桌面的不同,没有状态,每次点击后看到的页面都是“新的”,这样不好把控 好多动作要在浏览器控制,这需要你让大多数浏览器兼容,但事实上,用户使用那些乱七八糟浏览器的人不在少数 用最通用的方式,如跳转页面,叫成个浏览器,都应该没问题
跳转页面 不能解决问题,因为连续点击。在跳转页面前就已连续点击[/quote]点击提交后,页面还没有返回前,再点击是无效的 服务端,保存成功后,response.redirect(),到别的页面了,他没办法再点击先前的那个提交页面了!
sky0813 2019-05-17
  • 打赏
  • 举报
回复
引用 6 楼 秋的红果实 的回复:
因web程序和桌面的不同,没有状态,每次点击后看到的页面都是“新的”,这样不好把控 好多动作要在浏览器控制,这需要你让大多数浏览器兼容,但事实上,用户使用那些乱七八糟浏览器的人不在少数 用最通用的方式,如跳转页面,叫成个浏览器,都应该没问题
跳转页面 不能解决问题,因为连续点击。在跳转页面前就已连续点击
秋的红果实 2019-05-17
  • 打赏
  • 举报
回复
因web程序和桌面的不同,没有状态,每次点击后看到的页面都是“新的”,这样不好把控 好多动作要在浏览器控制,这需要你让大多数浏览器兼容,但事实上,用户使用那些乱七八糟浏览器的人不在少数 用最通用的方式,如跳转页面,叫成个浏览器,都应该没问题
sky0813 2019-05-16
  • 打赏
  • 举报
回复
现在用这个方法,测试可以达到效果,但不知会不会有些浏览器得不到控制?或者有什么弊端? OnClientClick="this.disabled=true;" UseSubmitBehavior="False"
秋的红果实 2019-05-16
  • 打赏
  • 举报
回复
这种问题,提交成功后跳转到一个新的页面,response.redirect(successful.aspx); successful.aspx里面可以写提交成功之类的内容 或者跳转到提交页面也可以,response.redirect(提交页面);此时是”新“的页面 这个在MVC里,划分的很清晰,有get,post特性 web和窗体程序不同,不要搞禁用按钮了
BrucesLong 2019-05-16
  • 打赏
  • 举报
回复
前端按钮js禁用,后端服务端加lock,数据表设计建唯一索引,确保数据唯一性
Hello World, 2019-05-16
  • 打赏
  • 举报
回复
$("#btnTest2").click();改成document.getElementById('btnTest2').click();
如果客户端ID生成的不是btnTest2就更改一下clientIdMode的设置
sky0813 2019-05-16
  • 打赏
  • 举报
回复
想问下,这个简单的方法。为什么大家不太用,是有什么原因吗?

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧