In ASP.NET MVC there exists a ModelState class that contains ModelErrorCollection. And a ModelError represents an error the occurs during model binding.
I know that ValidationResult is returned from ValidationAttribute.IsValid Method, and validates the specified value with respect to the current validation attribute. I understand that we can inherit from validationAttribute and override IsValid() in order to write a custom model validation attribute.
Example of using ModelState: http://www.asp.net/mvc/tutorials/older-versions/models-(data)/performing-simple-validation-cs
Example of using ValidationResult: http://www.codeproject.com/Articles/260177/Custom-Validation-Attribute-in-ASP-NET-MVC
How do these two work together? Or not work together? What is the intersection? This question is trying to understand ASP.NET MVC validation approaches better.
Why am I interested and why not just use data annotations? The answer is, I want to better understand validation for dynamic fields in ASP.NET MVC. In my product context, I will not have a model of pre-determined properties to attach validationAttributes to.