【问题标题】:Form submmited twice from MVC Controller Action表单从 MVC 控制器操作提交了两次
【发布时间】:2019-04-15 02:51:29
【问题描述】:

我试图解释为什么用户能够两次提交相同的表单详细信息。一开始我以为提交按钮是按了两次,现在可能还是这样。

当我检查数据库中的结果时,我可以看到相同的信息已经输入了两次,而且还输入了相同的日期时间戳,一直到第二次。如果是这种情况,肯定需要至少一秒钟才能再次推送提交。

此外,在输入并保存调查后,用户会被重定向到不同的页面。

为什么会这样?

[HttpPost]
public ActionResult InputResult(SurveyViewModel model)
{
    if (ModelState.IsValid)
    {
        Survey_Result InputResult = new Survey_Result();

        InputResult.SurveyStatusID = model.SurveyStatusID;
        InputResult.Q1DateCompleted = DateTime.Now;
        InputResult.Q2 = model.Q2;
        InputResult.Q3 = model.Q3;
        InputResult.Q10 = model.Q10;
        InputResult.Q11 = model.Q11;
        InputResult.Q11Other = model.Q11Other;
        InputResult.DateAdded = DateTime.Now;
        InputResult.AddedBy = Convert.ToInt32(User.Identity.GetUserId());

        _surveyService.AddSurvey(InputResult);
        _surveyService.Save();

        return RedirectToAction("Details", "Survey", new { id = model.SurveyStatusID, feedback = "InputComplete" });
    }

    return RedirectToAction("Details", "Survey", new { id = model.SurveyStatusID, feedback = "InputError" });
}

【问题讨论】:

  • 在 1 秒内按两次按钮非常容易。

标签: c# asp.net-mvc forms form-submit


【解决方案1】:

代码对我来说看起来不错。如果您有权访问该用户,则可以在其上弹出 Fiddler 以查看它是否两次发布数据。如果它不是一直发生,那么几乎可以肯定是用户错误恕我直言。

如果您无权访问客户端,则可以在每个发布请求或调试行中弹出一个日志条目(如果您可以在此服务器上收集它)。

我遇到了类似的问题,客户端 javascript 禁用点击按钮对我有用。

【讨论】:

  • 这似乎是由于用户错误,再次与用户交谈,他们说页面冻结了几秒钟,所以他们再次“点击”。看起来客户端javascript是要走的路。
【解决方案2】:

您确定同时需要 AddSurvey 和 Save 吗?

删除保存并重试。

【讨论】:

  • 取决于他的服务等级,但我认为他确实需要它。
猜你喜欢
  • 2018-07-18
  • 1970-01-01
  • 2014-11-03
  • 2018-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多