In a decidedly typical turn of events, Microsoft changed the API of BindModel in ASP.NET MVC 2 such that it breaks DefaultDictionaryBinder. No longer can you enumerate through the ValueProvider, instead you can only Get a value which you know the name of. I’ve updated the code to work with MVC2 and also tested it with the new MVC 3 RC.
The code is compatible with ASP.NET MVC 1, 2 and 3. To use it for ASP.NET MVC 1, just set the conditional compiler directive
ASPNETMVC1 and it will enable the MVC 1 code, otherwise it will work with MVC version 2 and 3.
The code is now up at github: DefaultDictionaryBinder.cs.
There’s also an example MVC3 project showing the basic functionality of the Dictionary Binder: link