需要将GET请求中的集合发送到我的Web API

时间:2017-07-03 12:23:43

标签: c# asp.net asp.net-web-api

我有一个场景,我需要将GET请求中的多个ProductCodes发送到我的Web API。在我的asp.net web api控制器中有一种方法可以使我的Action方法的参数为List<int> ProductCodes类型。我假设不,我必须像?ProductCodes=a,b,c那样传递它们,然后接受它作为ProductCodes的字符串列表。如果有更好的方法,请告诉我。

我在代码端获取null

[HttpGet] 
[ActionName("product-cache-deletion")] 
public HttpResponseMessage ProductCacheDeletion(List<string> ProductCodeList) { 
    //...
}

我称之为

http://localhost:59956/api/manuals/product-cache-deletion?ProductCodeList=a,b,c

但每次ProductCodeList

的值都为空

4 个答案:

答案 0 :(得分:1)

  

你可以尝试下面的方法,你可以传递多个值   多个参数很容易。希望它会对你有所帮助。

$.ajax({
        type: "GET",
        url: url,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        data: { ProductCodes: "a,b,c" },// By this way you can pass multiple parameters too
        success: function (rsp) {
        }
    });

答案 1 :(得分:1)

答案 2 :(得分:0)

在您的操作中,设置[FromURI]属性,如下所示:

public HttpResponseMessage ProductCacheDeletion([FromUri] IEnumerable<string> ProductCodeList)

如果我没记错的话,我认为[FromUri]位是你得到空的主要原因 否则,您最终会在&#34; a,b,c&#34;列表中输入一个条目。

然后您的URL,您可以将每个邮政编码列表指定为单独的查询字符串参数,如下所示:

/product-cache-deletion?ProductCodeList=a&ProductCodeList=b&ProductCodeList=c

当我这样做时,我已经将参数称为我传入的单数版本,因此URL更直观地阅读。

答案 3 :(得分:0)

您可以使用[FromUri]属性强制api将查询字符串作为列表读取

StringColumn                                 DateTimeExtracted
-------------------------------------------- -----------------
Bogdanel 01/02/2017 03:04 hei ho             01/02/2017 03:04
Georgel 05/06/2017 07:08 danga langa         05/06/2017 07:08
Suna'n asfintit 09/11/2018 11:22 hei talanga 09/11/2018 11:22
Danga langa. Pai da.                         NULL
                                             NULL
NULL                                         NULL

然后使用数组

中相同的参数名称foreach项调用api
[HttpGet] 
[ActionName("product-cache-deletion")] 
public HttpResponseMessage ProductCacheDeletion([FromUri]List<string> ProductCodeList) 
{ 
    //...
}

详细了解属性here