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

ano*_*ano 5 asp.net-web-api

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

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

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

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

Dar*_*ler 13

一种方法是避免尝试将值作为参数传递并简单地执行

  var queryValues = Request.RequestUri.ParseQueryString();
Run Code Online (Sandbox Code Playgroud)

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

如果您确实想使用参数,那么具有[FromUri] FormDataCollection类型的参数可能会起作用.

  • 谢谢!我使用`var queryValues = HttpUtility.ParseQueryString(Request.RequestUri.Query);`,因为RequestUri上没有ParseQueryString.难道我做错了什么?使用RC版本. (2认同)