相关疑难解决方法(0)

有哪些方法可以在ASP.NET MVC中停止多个表单回发?

常见的Web问题是用户多次单击表单的提交按钮,因此服务器不止一次地处理表单.当用户点击已提交表单的后退按钮并因此再次处理时,也会发生这种情况.

什么是阻止ASP.NET MVC发生这种情况的最佳方法?

我认为的可能性是:

  1. 提交后禁用该按钮 - 这会绕过多次点击而不是导航
  2. 让接收操作立即重定向 - 浏览器似乎将这些重定向保留在历史记录之外
  3. 在会话和表单中放置一个唯一的标记 - 如果它们匹配处理表单 - 如果不清除表单以进行新提交

还有更多吗?

是否有任何特定的实现?

我可以看到第三个选项被实现为具有HtmlHelper扩展的ActionFilter,其方式与防伪内容类似.

期待收到MVC'ers的消息.

asp.net-mvc postback submit action-filter

20
推荐指数
2
解决办法
7439
查看次数

防止双重提交

我有一个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设计模式来防止这种情况?

c# asp.net-mvc jquery asp.net-mvc-3

6
推荐指数
2
解决办法
7949
查看次数

防止在 ASP.NET MVC 页面上重复提交/发布

我希望得到一些关于我打算用来防止 ASP.NET MVC 4 应用程序中重复记录的方法的反馈,以及我没有想到的对用户体验的影响。

Web 表单有六个输入字段和一个保存按钮(以及一个取消按钮),用户最多可能需要 10 分钟来填写表单。

通过帖子提交字段后,页面将在成功/失败时重定向到不同的页面,然后使用新的 Guid 作为主键将数据记录在数据库表中。

为了阻止用户多次按下保存按钮,但允许浏览器在关闭的连接上重新发布请求,我打算在呈现表单时为新记录的主键提供 Guid 作为隐藏的输入字段。

如果发生repost,或者用户多次按save,数据库服务器会因为key重复而拒绝记录的第二个post,我可以在服务器端检查和处理。

但这会给我带来更大的问题吗?

c# asp.net asp.net-mvc jquery asp.net-mvc-4

5
推荐指数
1
解决办法
1万
查看次数