我要做的是要有一个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>>
作为控制器参数,结果相同。
有人能指出我正确的方向还是给我一个有效的例子?
答案 0 :(得分:13)
一种方法是避免尝试将值作为参数传递,只需执行
var queryValues = Request.RequestUri.ParseQueryString();
在你的行动方法中。 QueryValues将是NameValueCollection,您可以迭代以访问查询参数。
如果你真的想使用参数,那么使用[FromUri] FormDataCollection类型的参数可能会有效。