【问题标题】:Prevent Double Submit on ASP.NET MVC page防止在 ASP.NET MVC 页面上重复提交
【发布时间】:2013-01-28 22:20:09
【问题描述】:

我有一个 ASP.NET MVC 4 视图。在视图中,我有

<form action="/myAction" method="post">
  ...
  <input type="submit" value=" Save&nbsp;" onclick="this.disabled = true; this.value = ' Please wait... '; return true;" />
</form>

通过禁用按钮,表单永远不会被提交。但是,我想在用户单击它后禁用该按钮。我想禁用它的原因是防止用户多次单击“提交”按钮。我究竟做错了什么?我想如果我返回 true,表单仍然会提交。

【问题讨论】:

  • 你到底为什么要使用突兀的 javascript 来处理你的点击事件?如果您使用的是 MVC 辅助方法(例如 Ajax.BeginForm),则有很多方法可以处理这种情况。
  • 同意@DavidL。为了扩展他的观点,这看起来不像是一个ajax调用......所以我不知道为什么用户会有机会重新提交。他们是否被发送回您不希望他们点击提交的完全相同的表单?

标签: c# asp.net-mvc-4


【解决方案1】:

禁用表单提交事件中的按钮,而不是按钮的单击事件。这是因为 click 事件在表单提交之前触发 - 虽然您返回 true,但我认为这不会导致提交失败。

【讨论】:

    【解决方案2】:

    使用动作过滤器。 This blog post 有一个类,你可以直接放入你的项目,装饰你的动作,你就完成了。

    【讨论】:

    • 更好地使用javascript,我已经尝试过该解决方案但并不完美。
    猜你喜欢
    • 2015-03-11
    • 2016-03-18
    • 1970-01-01
    • 1970-01-01
    • 2017-06-26
    • 1970-01-01
    • 2015-07-04
    相关资源
    最近更新 更多