【问题标题】:How to redirect to action in ASP.NET Core WebAPI?如何重定向到 ASP.NET Core WebAPI 中的操作?
【发布时间】:2018-11-05 04:25:13
【问题描述】:

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

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

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

    return RedirectToAction("GetAll"); 
}

Delete 动作总是重定向到它自己,而不是GetAll。为什么这样?同时,来自Post 的类似重定向操作也可以。

找不到有关该主题的任何文档。有什么帮助吗?

【问题讨论】:

  • 为什么要在 web api 中重定向?
  • 您可以在Delete action中通过HttpClient的GetAsync方法向GetAll action发出请求并返回结果。
  • @Brad,我只想将更新后的集合返回给客户端,而不向 GetAll 发出新请求。
  • @Orhun, RedirectToAction 方法是用来做这件事的,不是吗?
  • DRY 解决方案是让您的删除操作返回NoContent(),然后让客户端请求GetAll()

标签: asp.net-core asp.net-core-webapi asp.net-web-api-routing


【解决方案1】:

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

RedirectToActionResult("GetAll", "ControllerName", null);

Documentation

希望你会发现这很有用。

【讨论】:

  • 您可以尝试 RedirectToRoute("routeName", routeValues) 其中 routeName 可以作为名称添加到 http 路由,例如[HttpGet("get-all", Name = "routeName")]
  • ReDirectToAction 和 ReDirectToActionResult 有什么区别?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-03
  • 2010-10-23
  • 1970-01-01
相关资源
最近更新 更多