禁止在没有javascript的情况下提交多个表单

时间:2015-03-26 12:20:05

标签: c# html asp.net-mvc webpage

我有一个创建用户帐户的Asp.net MVC操作(在输入验证之后)。以及包含调用此操作的注册表单的视图。当action验证输入时,用户将留下webbrowser等待服务器响应并再次单击“提交”按钮。这会创建多个帐户。有没有办法在没有javascript的情况下防止用户进行表单重新提交。我不能在这个项目中使用javascript,它适用于非JavaScript浏览器。或者你能建议(服务器)其他解决方案吗?

编辑:

  1. 此表单请求使用POST方法
  2. 不允许使用JavaScript,因为此Web应用程序针对不支持javascript的残疾人使用特殊Web浏览器

3 个答案:

答案 0 :(得分:1)

你必须处理服务器端的情况然后,没有办法解决这个问题。

我想到有三种选择:

  • 创建一个cookie,并为每个提交检查是否存在
  • 类似,但使用会话对象
  • 在创建新帐户之前,请始终检查用户是否存在于数据库中。无论如何,这应该是一个明智的选择!

答案 1 :(得分:0)

您可以添加唯一的隐藏令牌作为表单的一部分。此令牌也可以保存为服务器上的会话的一部分。

当用户在第一个操作上发布表单时,将验证令牌并设置一个标志以指示正在处理请求。处理的行动和结果呈现。如果在等待结果时,用户尝试重新发布请求,则令牌验证将失败,因为请求仍在处理中。

在侧节点上,人们持续点击的主要原因是服务器是否收到请求没有反馈。为此,最好将用户重定向到显示正在处理请求的临时页面。与上述内容相结合可用于显示请求进度并在完成时重定向到相应的页面。

当然,你也应该考虑让这个过程更轻一些。因此,系统可以快速响应输入而不是让用户等待。

答案 2 :(得分:0)

是否需要使用MVC?我认为你可以使用WebForms完成类似的事情。当用户提交请求时,在后面的代码中您可以禁用提交按钮,如下所示:

btnSubmit.Enabled = false;

但如果MVC是必须的,那么@walther答案是正确的