ASP.NET MVC如何防止重新POST

Ian*_*ink 5 asp.net-mvc asp.net-mvc-4

使用MVC 4.

当我们的网站上下订单时,订单会发布到:

    [HttpPost]
    public ActionResult ConfirmOrder(ABCModel model)
    {
        //Do Stuff
        return View("ConfirmedOrder", model);
    }
Run Code Online (Sandbox Code Playgroud)

用户将看到"确认"页面.

如果他们在浏览器中按REFRESH,则页面再次POST.

在MVC中是否有一种方法可以再次阻止POST,可能是在重定向或某种类型?

nom*_*mad 9

而不是做

return View("ConfirmedOrder", model)

将您的确认逻辑分离到控制器中并执行

return RedirectToAction("ConfirmOrderActionName").

在这里,您的ConfirmOrderActionName控制器可以从数据存储中检索订单信息,并将其发送到自己的视图或ConfirmedOrder视图.

PS

请注意,RedirectToAction()辅助方法也返回一种类型ActionResult(就像返回View()一样).

如果你有兴趣,请看:

MSDN:ASP.NET MVC应用程序MSDN中的控制器和操作方法:ActionResult类

  • +1这称为发布/重定向/获取模式http://en.wikipedia.org/wiki/Post/Redirect/Get (3认同)