【问题标题】:How do I pass array from Angular 6 to ASP.NET Core API for GET method?如何将数组从 Angular 6 传递到 ASP.NET Core API 以获取 GET 方法?
【发布时间】:2019-05-15 06:38:06
【问题描述】:

所以我期待的是,当 Angular 6 应用程序使用 GET 方法请求时,将唯一标识符的列表或数组作为参数发送到 ASP.NET Core Web API,然后 ASP.NET Core 将带来仅与将唯一标识符数组返回到 Angular 应用程序。

我的 Web API 代码看起来像这样。

[HttpGet]
public ActionResult GetByGuids(List<Guid> Guids)
{
  // some code here...

  return Ok(_someService.someAction(Guids)); 
  //Guids will be passed as a parameter to the function of service layer
}

根据我自己的研究,我无法将唯一标识符数组添加到正文中,因为这是 GET 方法。

我必须添加 [FromQuery],因为如果我在参数是数组或列表时不添加它会产生错误。

如果 [FromQuery] 是处理这种情况的唯一方法,那么我不知道应该如何为 Angular 编写代码。

请帮忙。

提前谢谢你。

【问题讨论】:

  • 更改为IEnumerable&lt;Guid&gt; Guids 并传递为?Guids=6d627994-dce5-487e-bd2c-d48c0311a2e0&amp;Guids=29a76d51-3c44-4fde-a0f1-b1f34567175e 等?
  • “因为如果我不添加它会产生错误” - 请确保在遇到错误时包含错误消息。
  • 这能回答你的问题吗? Pass an array of integers to ASP.NET Web API?

标签: c# angular typescript asp.net-core asp.net-core-webapi


【解决方案1】:

将List&lt;Guid&gt; Guids 更改为[FromQuery]List&lt;Guid&gt; Guids:

public ActionResult GetByGuids([FromQuery]List<Guid> Guids)

然后您可以将请求发送为http://myserver/controller/GetByGuids?Guids=6d627994-dce5-487e-bd2c-d48c0311a2e0&amp;Guids=29a76d51-3c44-4fde-a0f1-b1f34567175e

【讨论】:

  • 我在将查询字符串参数之类的“数组”传递给 ASP.NET Core 2.1 Api 时遇到了问题,其中数组总是为空。请参阅此处以获取解决问题的答案:stackoverflow.com/questions/43397851/…
  • 感谢您的回答。但是您应该在 FromQuery 上添加名称以便在 ASP.NET Core 2.1 中工作
  • 我刚刚将自己的项目升级到2.1,但仍然不需要在FromQuery上添加名称,除非传递的名称不同。
猜你喜欢
  • 1970-01-01
  • 2018-01-27
  • 1970-01-01
  • 2016-07-16
  • 2023-03-05
  • 1970-01-01
  • 2020-04-08
  • 2022-10-24
  • 2021-10-13
相关资源
最近更新 更多