繁体   English   中英

RedirectToAction如何指定action http方法?

[英]How to RedirectToAction specifying the action http method?

我想通过重定向到另一个 controller 来执行 POST 操作。我的问题是如何使用两个相同名称的操作来执行此操作。

CartLinesController.cs

// GET: CartLines/Create
    public IActionResult Create(){}

   [HttpPost]
   [ValidateAntiForgeryToken]
   public async Task<IActionResult> Create(parameters){}

我从另一个 controller 调用这些操作。

产品控制器.cs

public IActionResult AddToCart(int id)
    {
        TempData["ProductId"] = id;
        return RedirectToAction("Create", "CartLines");
    }

问题是此 RedirectToAction 正在调用 GET:Create 操作而不是 POST 操作。 有没有办法指定这个?

HTTP 不支持使用 POST 重定向到页面。 当你重定向到某个地方时,HTTP“位置”header 告诉浏览器到 go 的位置,并且浏览器对该页面发出 GET 请求。

可以先重定向到Get方法,传入一个bool值来区分是自动执行还是手动执行。 例如:

public IActionResult AddToCart(int id)
{
    TempData["ProductId"] = id;
    return RedirectToAction("Create", "CartLines",new { parameter = true});
}

public IActionResult Create(bool? parameter)
{
    ViewData["parameter"] = parameter;
    return View();
}

然后判断视图中是否存在ViewData["parameter"] ,存在则使用JavaScript自动调用post方法。

你应该手动做。 首先重定向到 GET 路由。 在该路线中,使用 POST 方法将带有自动提交(可能是 javascript 明智)的隐藏表单返回到您的 POST 操作。

看到 这个,HTTP 重定向不支持开箱即用的 POST。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM