如何在ASP.NET Core WebAPI中重定向到操作?

5

我可以为您翻译关于IT技术方面的内容。以下是需要翻译的内容:

我在我的ASP.NET Core Web API应用程序的控制器中有两个操作:

[HttpGet("get-all")]
public IActionResult GetAll() { ... }

and

[HttpDelete("{id}")]
public IActionResult Delete(int id)
{
    ...

    return RedirectToAction("GetAll"); 
}

Delete 操作总是重定向到自身,而不是 GetAll。为什么会这样?与此同时,类似的从 Post 操作的重定向却可以正常工作。

找不到任何相关文档。需要帮助吗?


为什么在Web API中要进行重定向? - Brad
你可以通过 HttpClient 的 GetAsync 方法,在 Delete 操作中向 GetAll 操作发出请求,并返回其结果。 - Orhun
@Orhun,RedirectToAction方法的作用就是做这件事情,不是吗? - iAmV
我不确定浏览器是否会在XHR请求中遵循重定向。特别是在Delete动词上更不可能。 - Brad
1
DRY的解决方案是让你的删除操作返回 NoContent(),然后让客户端请求 GetAll() - Brad
显示剩余2条评论
1个回答

3

您尝试过使用RedirectToActionResult吗?像这样(将ControllerName更改为您实际的控制器名称):

RedirectToActionResult("GetAll", "ControllerName", null);
文档,希望能对您有所帮助。

你也可以尝试使用 RedirectToRoute("routeName", routeValues) 方法,其中 routeName 可以作为名称添加到 HTTP 路由中,例如 [HttpGet("get-all", Name = "routeName")]。 - KYG
ReDirectToAction和ReDirectToActionResult有什么区别? - Matt Drouillard

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接