在ASP.NET MVC 2中,我可以使用默认的ModelBinder将查询字符串反序列化为数组吗?

在ASP.NET MVC 2中,您可以使用此URL和此控制器方法:

GET http://server/controller/get?id=5 public ActionResult Get(int id) { ... } 

并且ModelBinder将在方法参数中将id=5查询字符串转换为id = (int) 5 。 但是,这不起作用:

 GET http://server/controller/get?idlist=1,2,3,4,5 public ActionResult Get(int[] idlist) { ... } 

idlist在参数中为null。 虽然对此进行解析非常简单,但我想知道是否有办法更改方法签名或查询字符串以使默认的ModelBinder自动反序列化数组/集合?

使用默认的模型绑定器,URL应该是

 http://server/controller/get?idlist=1&idlist=2&idlist=3&idlist=4&idlist=5 

要么

 http://server/controller/get?idlist[]=1&idlist[]=2&idlist[]=3&idlist[]=4&idlist[]=5 

如果你真的想使用idlist = 1,2,3,4,5,你应该拥有自己的活页夹

这对派对来说有点晚了,但我想做同样的事情。

您可以将单个字符串作为{1,2}传递,然后绑定器将它绑定到数组,例如

  

这就是我的想法:

 public ActionResult Get(int id) { ... } 

应该用作

 GET http://server/controller/get/5 

idlist可以简单地用逗号分隔(,)