Jak*_*urc 3 html javascript asp.net-mvc
在我的ASP.NET MVC应用程序的日志检查期间,我发现一些用户设法两次发布相同的表单.我试图重现它,但我失败了.无论如何,我想阻止用户两次发布相同的数据.在ASP.NET MVC中是否有任何规范的解决方案,或者我必须开发自己的自定义解决方案?
我的自定义解决方案我可以想象客户端和服务器端解决方案.在这两种情况下你能推荐我吗?
小智 8
通常的方法是在单击后立即禁用提交按钮.
使用jQuery这样的东西应该工作:
<script type="text/javascript">
$("#myform").submit(function()
{ $("#submit-button").attr("disabled", "disabled"); });
</script>
Run Code Online (Sandbox Code Playgroud)
现在仔细阅读你的问题,看到你使用ASP.NET MVC ....
双帖可能是由于用户在发布后刷新页面而引起的.如果您只是从帖子操作中返回一个视图:
[AcceptVerbs (HttpVerbs.Pos)]
ActionResult ProcessUserPost ()
{
/*...*/
return View ();
}
Run Code Online (Sandbox Code Playgroud)
然后,浏览器将尝试通过执行相同的步骤来重新创建页面,这意味着再次提交记住的表单.有些浏览器会显示一条警告信息(FireFox),其他浏览器会静静地显示(看Opera).为了避免这种情况,您需要确保用户获取的页面是GET请求而不是POST的结果.
基本上,您需要执行重定向而不是返回视图.这将指示浏览器再次获取页面.
[AcceptVerbs (HttpVerbs.Pos)]
ActionResult ProcessUserPost ()
{
/*...*/
return RedirectToAction ("DisplayTheForm");
}
Run Code Online (Sandbox Code Playgroud)
这样刷新页面不会导致发送新的POST请求.
当然,这不会阻止用户单击后退按钮返回到表单页面再次提交.但是应该在您的业务逻辑中处理这种情况,检查同一用户对您正在执行的任何操作的同一订单的双重提交.
我可以想到三种方法来处理这个问题.
| 归档时间: |
|
| 查看次数: |
4173 次 |
| 最近记录: |