一个常见的 Web 问题是用户多次单击表单的提交按钮,因此服务器多次处理该表单。当用户点击后退按钮提交表单并再次处理时,也会发生这种情况。
在 ASP.NET MVC 中阻止这种情况发生的最佳方法是什么?
我看到的可能性是:
- 提交后禁用按钮 - 这会绕过多次点击而不是导航
- 立即重定向接收操作 - 浏览器似乎将这些重定向排除在历史记录之外
- 在会话和表单上放置一个唯一令牌 - 如果它们匹配则处理表单 - 如果不清除表单以重新提交
还有更多吗?
这些是否有一些特定的实现?
我可以看到第三个选项被实现为带有 HtmlHelper 扩展的 ActionFilter,其方式与防伪工具类似。
期待收到您的 MVC'ers 的来信。