2017-07-03 11 views
1

我有一個場景,我需要將GET請求中的多個ProductCodes發送到我的Web API。在我的asp.net web api控制器中,有一種方法可以使我的Action方法的參數爲List<int> ProductCodes。我假設沒有,我必須通過他們這樣?ProductCodes=a,b,c然後接受它爲ProductCodes的字符串列表。請讓我知道是否有更好的方法。需要將GET請求中的集合發送到我的Web API

我得到空在代碼方面

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

我稱之爲像

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

但每次值爲null爲ProductCodeList

+0

[HTTPGET] [ActionName( 「以產品爲高速緩存缺失」)] 公衆HttpResponseMessage ProductCacheDeletion(列表 ProductCodeList) {} 這是API方法,其即時試圖喜歡 - HTTP調用://本地主機:59956/API /手冊/產品緩存缺失ProductCodeList = A,B,C 但每次值將爲null爲ProductCodeList – kiran

+1

如果您重複查詢字符串參數瀏覽器將它們解釋爲一個數組,也許web api也是如此。試試'?ProductCodes = a&ProductCodes = b'等。 – Crowcoder

回答

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) { 
     } 
    }); 
0

在你的行動,將[FromURI]屬性,像這樣:

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

如果我沒記錯對,我認爲[FromUri]位是你變得空的主要原因。
否則,您最終只會在「a,b,c」列表中顯示一個條目。

然後你的網址,您可以指定每個職位代碼列表,像這樣一個單獨的查詢字符串參數:

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

當我這樣做,我所做的參數調用的奇異版本是什麼我正在通過,所以URL更直觀。

0

您可以使用[FromUri]屬性,這將迫使API來讀取查詢字符串作爲一個列表

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

然後調用具有相同參數名稱的foreach項API在數組中

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

瞭解更多關於屬性here

相關問題