The default ModelBinder of ASP.NET MVC is not able to bind the data with variables of type KeyValuePair. This is due to the way it has to link the complex types: first it creates a new instance of the object through a constructor without arguments and then it establishes the values of the different properties. In this case, the Key and Value properties of the KeyValuePair object are read-only, so you can assign values to it and the object remains empty.
The solution would be to create a custom ModelBinder for this type, but how could you create a ModelBinder for a generic type such as KeyValuePair?