2012-07-30 65 views
5

我想要做的是有像api/calculator這樣的api請求嗎? = 7.00 & = 9.99 & = 5.50 & = 45.76等如何我的控制器可以抓住該請求數據?查詢字符串的鍵/代碼是1到1000之間的整數。在查詢字符串中,它們可以是某些的1000個代碼,不一定是全部。價值部分是雙打。ASP.NET Web API - 具有多個參數的GET請求

我認爲的一種方法是,如果我創建一個具有1000個屬性的模型對象(例如StupidObject)(現在應該使用名稱類似p1,p2,.. p1000的屬性,因爲整數不是允許的屬性名稱),用ModelBinder裝飾。然後對於控制器我可以有類似GetCalcResult(StupidObject obj){...}但這似乎並不像一個優雅的解決方案:)

我試過像GetCalcResult([FromURI]Dictionary<int, double> dict){...}控制器,但字典始終爲空。也沒有[FromURI]我得到一個錯誤。還嘗試使用List<KeyValuePair<int, double>>作爲控制器參數,結果相同。

任何人都可以指向正確的方向或給我一個工作的例子嗎?

回答

13

一種方法是避免試圖通過在作爲參數的值,只是做

var queryValues = Request.RequestUri.ParseQueryString(); 

在你的操作方法。 QueryValues將是NameValueCollection,您可以迭代以訪問您的查詢參數。

如果你確實想使用一個參數,可以使用[FromUri] FormDataCollection類型的參數。

+2

謝謝!我使用了'var queryValues = HttpUtility.ParseQueryString(Request.RequestUri.Query);',因爲在RequestUri上沒有ParseQueryString。難道我做錯了什麼?使用RC版本。 – ano 2012-07-31 07:34:57

+1

ParseQueryString是System.Net.Http中定義的擴展方法,因此您需要使用System.Net.Http; – rism 2015-03-11 23:24:24