The most common approach I've seen in online examples when it comes to validation in MVC is to use the ViewModel to validate the data. People either use Data Annotations or implement IValidatableObject and IClientValidatable interfaces. But doesn't that break the Single Responsibility Principle? Should the ViewModel really be responsible for validation?
One approach I thought of is to create a separate validator class and pass it the ModelState dictionary from the controller. The downside to this approach is that we lose the ability to perform easy client-side validation by implementing IClientValidatable interface and using the JQuery validation library.
What would be the correct way to implement ViewModel validation in MVC without breaking the SOLID principles?