防止双重提交

Cal*_*ass 6 c# asp.net-mvc jquery asp.net-mvc-3

我有一个ASP.NET MVC 3应用程序,它有一个名为的post post Create:

[HttpPost]
public virtual ActionResult Create(Issues issues)
{
    if (ModelState.IsValid)
    {
        context.Issues.Add(issues);
        context.SaveChanges();
        return RedirectToAction("Index");
    }
    return View(issues);
}
Run Code Online (Sandbox Code Playgroud)

如果我错误地双击提交按钮,它将创建2x问题.有没有办法防止这种情况,没有使用javascript和禁用按钮,我认为使用a的全部用途RedirectToAction是通过使用Post/Redirect/Get设计模式来防止这种情况?

gdo*_*ica 6

轻松解决!

单击时禁用提交按钮.结束.

$('submitButtonId').click(function(){
    $(this).prop('disabled', true);
    $(this).attr('disabled', 'disabled'); // for jQuery versions < 1.6.
});
Run Code Online (Sandbox Code Playgroud)


Chr*_*ler 4

您提到的模式(Post/Redirect/Get 设计模式)可防止页面刷新重复发布,因为最后一个操作是 GET,而不是 POST。

如果您想防止双击导致重复发布,您可以:

1. Disable the button after click
2. Maintain a unique index on 'Issues' and look for duplicates
3. Maintain something in session that gives you an indication of a double post
Run Code Online (Sandbox Code Playgroud)

也许还有更多方法...我认为禁用该按钮可能是最简单的,因为无论如何您都会重定向到另一个页面。