我正在使用Web API(ASP.NET MVC 5的一部分),我试图将查询字符串值绑定到Dictionary<int, bool>
。
我的Web API方法很简单:
[HttpGet]
[Route("api/items")]
public IQueryable<Item> GetItems(Dictionary<int, bool> cf)
{
// ...
}
如果我尝试调用此网址:
/api/items?cf[1009]=true&cf[1011]=true&cf[1012]=false&cf[1015]=true
参数cf
始终为null
。
如何通过QueryString将值字典传递给Web API方法?
答案 0 :(得分:6)
如果要使用查询字符串参数传递字典(基本上是键和值对),则应使用以下格式:
¶meters[0].key=keyName¶meters[0].value=keyValue
在我的Action方法签名中,参数定义为:
Dictionary<string,string> parameters
希望这有帮助。
在阅读Scott Hanselman的this post之后,我能够自己解决这个问题。谢谢Scott !!
谢谢, Nirav
答案 1 :(得分:0)
没有内置的方法可以做到这一点。在这种情况下,“cf [1009]”是参数的名称,而不是“cf”。您可以编写自己的查询字符串解析器来实现您的需求。更好的签名是:
/api/items?cf=1009&cf=1011&cf=1015
然后使用以下方法绑定它:
public IQueryable<Item> GetItems(List<int> cf)
{
// ...
}
答案 2 :(得分:0)
您可以为字典创建一个ModelBinder,如本文所述: