I think the only solution is to use custom model binding (implement IModelBinder
).
This gives you full access over the deserialization of the object.
See this article on SO and Figure 7 from MSDN:
Or maybe you can get in between using an action filter (see section Handling Validation Errors).