![](/img/trans.png)
[英]Url.Action cant find controller method which returns RedirectToAction
[英]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.