【问题标题】:Possible to pass a list of integer through web api or do I have to use a string param可以通过 web api 传递整数列表还是我必须使用字符串参数
【发布时间】:2016-07-07 17:49:33
【问题描述】:

我有一个场景,我需要在一个 GET 请求中向我的 Web API 发送多个 ProductId。

在我的 asp.net web api 控制器中,有一种方法可以使我的 Action 方法的参数为 List<int> productIds 类型。我假设没有,我必须像这样传递它们 ?ProductIds=1,2,3 然后将其作为string productIds 接受。

如果有更好的方法请告诉我。

【问题讨论】:

    标签: c# asp.net asp.net-web-api asp.net-web-api2 asp.net-core-1.0


    【解决方案1】:

    您可以表明您将接受 int[] 作为参数,并且 Web API 应按预期处理以逗号分隔的字符串到数组的映射。您可能需要包含 [FromUri] 属性以让 Web API 知道您期望来自查询字符串的这些值:

    public IEnumerable<Product> GetProducts([FromUri] int[] ProductIds)
    {
          // Your code here.
    }
    

    您还可以通过以下方式将多个值映射到同一个查询字符串参数:

    ?ProductIds=1&ProductIds=2&ProductIds=3...
    

    【讨论】:

    • 好的,我的查询字符串参数应该是什么样的,我的操作方法中的参数应该是什么样的?另外它必须是一个数组吗?我可以使用列表吗?
    • 您使用的逗号分隔字符串方法应该可以正常工作,或者您可以使用我提供的第二种方法(即重复查询字符串参数)。 Filip Woj has a blog post 这个主题更详细,甚至使用自定义活页夹来处理逗号分隔的值。
    • 你知道为什么如果我根本不传递参数,列表就会以实例化的方式进入,计数为 0?我希望它为空。
    • [FromUri] 帮助传输大量数据,例如1000 个项目的列表,发送它会不会很麻烦
    • 这不适用于描述的逗号分隔列表。
    猜你喜欢
    • 2023-02-26
    • 2018-10-23
    • 2015-04-29
    • 1970-01-01
    • 2021-09-10
    • 2021-05-02
    • 2019-01-04
    • 2022-08-21
    • 1970-01-01
    相关资源
    最近更新 更多