views:

291

answers:

2

I have a class that I am using to model my data in MVC. I have added some DataAnotations to mark fields that are required and I am using regular expressions to check valid Email Addresses. Everything works fine if the object is posted back to MVC and I have the ModelState property that I can check to confirm that the class is valid but how do I check to see if the class is valid outside of MVC using the same class and Data Anotations that I have already set up?

+1  A: 

Here's a method that I've used in the past with Data Annotations to get all of the errors on an annotated object (it could use some improvements, but it's a good starting point:

public static IEnumerable<ErrorInfo> GetErrors(object instance)    
{
   return from prop in TypeDescriptor.GetProperties(instance).Cast<PropertyDescriptor>() 
      from attribute in prop.Attributes.OfType<ValidationAttribute>()
      where !attribute.IsValid(prop.GetValue(instance))
      select new ErrorInfo(prop.Name, attribute.FormatErrorMessage(String.Empty), instance);    
}
mkedobbs
A: 

There doesn't appear to be anything built into .NET 3.5. If you can develop against .NET 4, though, there is a Validator class that provides what you need:

Validator class on MSDN