C# 防止在没有javascript的情况下提交多个表单

C# 防止在没有javascript的情况下提交多个表单,c#,html,asp.net-mvc,webpage,C#,Html,Asp.net Mvc,Webpage,我有一个Asp.net MVC操作,用于创建用户帐户(在输入验证之后)。以及一个包含调用此操作的注册表的视图。当操作验证输入时,用户将与webbrowser一起等待服务器响应,并再次单击提交按钮。这将创建多个帐户。有没有一种方法可以在不使用javascript的情况下让用户避免表单重新提交。我不能在这个项目中使用javascript,它是为非javascript浏览器设计的。或者您可以建议(服务器)其他解决方案吗 编辑: 此表单请求使用POST方法 不允许使用JavaScript,因为此Web应

我有一个Asp.net MVC操作,用于创建用户帐户(在输入验证之后)。以及一个包含调用此操作的注册表的视图。当操作验证输入时,用户将与webbrowser一起等待服务器响应,并再次单击提交按钮。这将创建多个帐户。有没有一种方法可以在不使用javascript的情况下让用户避免表单重新提交。我不能在这个项目中使用javascript,它是为非javascript浏览器设计的。或者您可以建议(服务器)其他解决方案吗

编辑:

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

  • 你必须在服务器端处理这种情况,这是没有办法的

    我想到了三种选择:

    • 创建一个cookie,并为每个提交检查它是否存在
    • 类似,但使用会话对象
    • 在创建新帐户之前,请始终检查数据库中是否存在该用户。这应该是一个无脑的反正
    您可以在表单中添加唯一的隐藏令牌。此令牌也可以保存为服务器上会话的一部分

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

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


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

    是否要求使用MVC?我认为您可以使用WebForms实现类似的功能。当用户提交请求时,您可以在“代码隐藏”中禁用“提交”按钮,如下所示:

    btnSubmit.Enabled = false;
    

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

    不使用JS的Web应用程序。。。听起来很奇怪。。。在MVC中也是这样。是Get请求还是Post请求?无论哪种方式,您都可以应用检查,如果该用户已经存在,则重新选中他。@Rajeev Kumar有一些不支持javascript的残疾人专用web浏览器。此Web应用程序是针对他们的。如果未完成,浏览器会呈现页面吗?如果是,您可以使用验证代码将用户重定向到新页面。它将输出一些初始HTML,其中包含“正在做一些工作……请稍候”等文本。当验证完成后,输出页面的其余部分:“工作完成了。点击这里登录”。我很好奇:为什么在残疾人使用的浏览器中不允许使用JavaScript?