ASP.NET Web API - 具有多个参数的GET请求

时间:2012-07-30 19:39:10

标签: asp.net-web-api

我要做的是要有一个api请求,例如/api/calculator?1=7.00&2=9.99&3 = 5.50& 4 = 45.76等我的控制器如何获取请求数据?查询字符串的键/代码的整数介于1和1000之间。在查询字符串中,它们可以是1000个代码中的部分,而不一定是所有代码。值部分是双倍的。

我认为可行的一种方法是,如果我创建一个具有1000个属性的模型对象(ex StupidObject)(现在应该使用名为p1,p2,... p1000的属性代码,因为整数不是允许的属性名称),用ModelBinder装饰。然后对于控制器我可以有类似GetCalcResult(StupidObject obj){...}的东西,但这似乎不是一个优雅的解决方案:)

我尝试过像GetCalcResult([FromURI]Dictionary<int, double> dict){...}这样的控制器,但是dict总是为空。也没有[FromURI]我收到错误。还尝试List<KeyValuePair<int, double>>作为控制器参数,结果相同。

有人能指出我正确的方向还是给我一个有效的例子?

1 个答案:

答案 0 :(得分:13)

一种方法是避免尝试将值作为参数传递,只需执行

  var queryValues = Request.RequestUri.ParseQueryString();

在你的行动方法中。 QueryValues将是NameValueCollection,您可以迭代以访问查询参数。

如果你真的想使用参数,那么使用[FromUri] FormDataCollection类型的参数可能会有效。