The options for class wide custom validation attributes are pretty poor right now without any really good extensibility points. Your pretty much stuck creating a custom ModelBinder, which can then add values to ModelState, to do anything complex with validation attributes.
Use the attributes just like you would and then detect what Types are requested from the binder, Reflect to find the attributes, and then validated/add to model state as necessary.
MVC 3 fixes this problem but until then your stuck creating your own binder.
This is unrealistic. I understand you're point: that the validation extensibility in MVC 2 is lagging in maturity behind MVC itself; however, MVC 3 is .Net 4.0 only and uses a ton of new conventions as far as syntax goes. There's not much of a business case on redoing this project in MVC 3 when it's not even out yet and the benefits are minimal considering this project is very close to production release. Still, I appreciate your comment. Thank you for taking the time to give your feedback.
@Jason? Well check out, lostechies.com/blogs/jimmy_bogard/archive/2009/03/17/, and then see if that changes your mind. The attributes are nice but there are other ways to accomplish your goal. I know "wait" isn't a practical answer but its the only one which correctly answers what your looking for.
-1 for doing validation in a model binder. IMHO validation is an aspect of the application that should be independent. Suggesting to use reflection and adding manually to the model state means that your validation logic is tied to the MVC infrastructure and not reusable. Also you risk up having parts of the validation in the model binder and other parts as data annotation attributes, etc... which is not very maintainable solution. Also in the example you showed, no validation is performed, it also states in the first paragraph the role of a model binder. No validation there.
@Darin Dimitrov, lol, you know MVC does ModelValidation in the model binder? In fact this is considered a feature. "Downvoted for using the same technique the framework uses". - "IMHO validation is an aspect of the application that should be independent" thats a bad answer. Validating the user entered a int into a textbox is not part of independent business logic but directly tied to the underlying UI platform.
I upvoted jfar's response b/c I think his explanation holds pretty well. I agree with trying to separate the concerns and really would rather not mix my validation logic with a custom model binder, but after doing a test app, I know I can at least get all of the properties of an object in the BindModel method (and the SetProperty method provided I add logic to ensure both properties have been validated).