如何在 MVC 4 中的 post 请求后更改 URL

How to change URL after post request in MVC 4

我们使用 vs 2010 mvc 4 制作了一个网络应用程序,向用户显示产品目录,我们还为此创建了购物车系统。但是每当用户提交购物车时,我们都会显示视图,但 URL 保持不变,

在 post 将数据发送到操作 CheckOut 之前 URL 是:

www.domain.com/shoppingcart/checkout

在 post 将数据发送到操作 Checkout URL 后与上述相同。我需要完成的是将 "www.domain.com/shoppingcart/checkout" this URL 更改为 "www.domain.com/products" 因此即使用户刷新页面 He/she 也无法下相同的订单两次或更多次。

我的 post 方法是形式 post。没有对 post 表单进行 ajax 调用。

有什么建议吗?

[HttpPost]
    public ActionResult CheckOut(Order order)
    {
        try
        {
         //.. some code
        }
        catch (Exception e)
        {
            HandleErrorInfo err = new HandleErrorInfo(e, "ShoppingCart", "CheckOut");
            return View("Error", err);
        }
        return View("OrderPlaced", order);
    }

我可以做这样的事情吗?

[DisplayURL(URL="www.domain.com/Products/Catelouge")]
[HttpPost]
    public ActionResult CheckOut(Order order)
    {
        try
        {
         //.. some code
        }
        catch (Exception e)
        {
            HandleErrorInfo err = new HandleErrorInfo(e, "ShoppingCart", "CheckOut");
            return View("Error", err);
        }
        return View("OrderPlaced", order);
    }

你不能直接重定向到一个新页面吗:

return Redirect("Home/MyNewPage");

Stephen Muecke 提出了解决方案。

使用 PRG 模式重定向到另一个方法或避免不必要的操作方法调用。谢谢斯蒂芬