使用MVC 4.
当我们的网站上下订单时,订单会发布到:
[HttpPost]
public ActionResult ConfirmOrder(ABCModel model)
{
//Do Stuff
return View("ConfirmedOrder", model);
}
用户会看到确认页面。
如果他们在浏览器中按REFRESH,则会再次发送POST页面。
MVC中是否有办法再次阻止POST,可能是重定向还是某种类型?
答案 0 :(得分:9)
而不是做
return View("ConfirmedOrder", model)
将您的确认逻辑分离到控制器并执行
return RedirectToAction("ConfirmOrderActionName")
。
此处,ConfirmOrderActionName
控制器可以从数据存储中检索订单信息,并将其发送到自己的视图或ConfirmedOrder
视图。
P.S。
请注意,RedirectToAction()
辅助方法也会返回ActionResult
类型(就像返回View()
一样)。
如果您有兴趣,请参阅:
MSDN: Controllers and Action Methods in ASP.NET MVC Applications和MSDN: ActionResult Class
答案 1 :(得分:1)
您可能想稍微重新设计逻辑。这是购物车结账时的命令问题。
以下是大多数购物车的工作原理 -
Step 1. Cart (Create a Session here)
... Shipping, Payment and so on
Step 2: ConfirmOrder - Get (If no Session, redirect to Cart page.)
ConfirmOrder - Post (If no Session, redirect to Cart page. If valid and
check out successful, redirect to Complete page)
Step 3: Complete (Clear the Session)