禁用“提交”按钮,不使用javascript

时间:2013-01-10 15:40:10

标签: c# asp.net submit

我正在尝试对“双提交”问题实施某种解决方案,当有一个提交按钮触发需要一些时间运行的代码例程时,会出现这种问题。

不幸的是,许多用户仍在使用旧的互联网浏览器和一些运行无脚本插件。我不能使用javascript。

点击asp.net中的按钮后有没有办法禁用按钮?

5 个答案:

答案 0 :(得分:2)

由于您想在用户点击后禁用该按钮(并且在您的页面仍在加载时),因此必须在客户端完成。 JavaScript是您可以使用的唯一客户端语言。

因此,请确保如果用户已禁用Javascript(现在极不可能),您的结束页面可以处理“双重提交”数据。

答案 1 :(得分:1)

短篇小说,没有。

在您的情况下,您需要制作一些服务器端代码来检测双重帖子,然后丢弃重复的请求。

答案 2 :(得分:0)

每次点击按钮后,您可以在服务器上启动计时器并将其置于会话中。在下一次单击时,您可以检查计时器并应用或拒绝下一次用户点击。

答案 3 :(得分:0)

因此,如果没有一些类型的客户端脚本,就无法禁用该按钮。如果您认为它将被禁用,无论它是什么类型的客户端脚本,那么这是一项不可能完成的任务。

所做的是确保他们尝试执行的操作每次加载时不会运行多次。

  1. 加载页面时创建隐藏字段;使用GUID填充该字段。
  2. 在服务器端点击处理程序的开头输入Lock块。
  3. 根据该GUID检查是否存在会话密钥。 (给它一个前缀,这样它就不会与任何其他基于GUID的会话密钥冲突。)
  4. 如果密钥存在,退出lock块并不执行任何操作,或显示某种错误消息。
  5. 如果它们的密钥不存在,则向该会话密钥添加新值,退出lock块,然后执行操作。为会话密钥提供适当的到期时间;它不应该超过几分钟。你甚至可以在操作结束时删除相关的会话密钥,如果它在那时重复有意义的话。

答案 4 :(得分:-2)

按钮点击事件中的

只需编写代码

{

//Some Code

button1.Enabled = false;

}