In ASP.NET MVC 2, can I deserialize a querystring into an array using the default ModelBinder?

asp.net-mvc, asp.net-mvc-2, c#, modelbinders, url

Solution

With the default modelbinder, the url should be

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

or

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

If you really want to use idlist=1,2,3,4,5, you should have your own binder

Problem

In ASP.NET MVC 2, you can use this URL and this controller method: ``` GET http://server/controller/get?id=5 public ActionResult Get(int id) { ... } ``` And the ModelBinder will convert the `id=5` querystring to `id = (int) 5` in the method parameter. However, this won't work: ``` GET http://server/controller/get?idlist=1,2,3,4,5 public ActionResult Get(int[] idlist) { ... } ``` `idlist` will be null in the parameter. Although the parsing for this is pretty trivial, I was wondering if there is a way to either change the method signature or the querystring in order to make the default ModelBinder automatically deserialize arrays/collections?

Original source