我正在尝试对“双重提交”问题实施某种解决方案,当有一个提交按钮触发需要一些时间运行的代码例程时,就会出现这种问题。
不幸的是,大量用户仍在使用旧的互联网浏览器和一些运行无脚本插件。我不能使用 javascript。
单击asp.net中的按钮后有没有办法禁用按钮?
由于您想在用户单击后(并且您的页面仍在加载时)禁用该按钮,因此必须在客户端完成。JavaScript 是唯一可以用于此目的的客户端语言。
因此,请确保如果用户禁用了 Javascript(现在几乎不可能),那么您的最终页面可以处理“双重提交”数据。
短篇小说,没有。
在您的情况下,您需要编写一些服务器端代码来检测重复发布,然后丢弃重复请求。
因此,如果没有某种客户端脚本,就不可能禁用该按钮。如果您假设它将被禁用,无论它是哪种客户端脚本,那么这都是一项不可能完成的任务。
您可以做的是确保他们尝试执行的操作在每次页面加载时不会运行超过一次。
Lock
块。lock
块并且什么都不做,或者显示某种错误消息。lock
块并执行您的操作。给会话密钥一个合适的过期时间;它不应该超过几分钟。您甚至可以在操作结束时删除相关的会话密钥,如果在该点重复它是有意义的。您可以在每次单击按钮后在服务器上启动计时器并将其置于会话中。在下一次点击时,您可以检查计时器并应用或拒绝下一次用户点击。
在按钮单击事件中只需编写代码
{
//Some Code
button1.Enabled = false;
}