双击/重复单击HTML按钮

时间:2011-07-27 15:11:52

标签: asp.net-mvc httprequest

我们的应用程序正在使用ASP.net MVC,我们对下面的场景中会发生什么有疑问。

我们有一个“按钮”进行付款,付款后我们有一个会话变量,将“PaymentSubmitted”标记为True。这个会话变量将用于根据它的值来做不同的事情。

现在我想知道如果用户点击两次“按钮”会发生什么情况。

第二个请求(从第二次点击完成按钮生成)是否会等到第一个请求被执行?或者第二个请求将继续进行,而不必担心第一个请求在哪里。

注意:我们不使用任何客户端脚本。

2 个答案:

答案 0 :(得分:1)

我假设按钮点击是表单上的“提交”。

单击该按钮后,将发布第二个请求。试想一下,您在任何给定页面上的浏览器上刷新了20次,这20个请求将被发送到您的Web服务器,并将按接收顺序处理。

如果您已经足够早地设置了会话变量,那么您应该可以在后续点击中检查会话变量 - 但这绝对不安全。

更好的方法是使用JavaScript或发布到其他页面,以便在付款时无法再次点击该按钮。

答案 1 :(得分:0)

可以识别操作(产品购买或其他任何付款)?在这种情况下,您可以在第一次单击后将操作标记为“进行中”。当您的服务器收到请愿书时,首先要检查操作的状态,如果“正在进行中”,则服务器不会启动另一个交易。

无论如何最好有一些客户端阻止功能(禁用按钮,带有典型等待消息的模态窗口等等),主要是为了用户,所以他们有反馈说“事情正在发生上”。但当然不能只在阻塞功能中进行转发,因为任何客户端都容易被改变。