2011-05-05 4 views
0

на asp.net mvc3 Я использую dataanotations для проверки. Я контролирую проверки на моем контроллере с помощью простого if (ModelState.IsValid). Как я могу контролировать эти проверки в простом классе, а не в контроллере?Проверка данных данных

Спасибо!

ответ

1

Это довольно много, что делает валидатор MVC за кадром:

Это будет перебирать все аннотации и понять OUR, если есть какая-то ошибка и добавить их в коллекцию об ошибке. Лучше всего поместить это в базовый класс, тогда у вас есть все остальные классы. если GetErrors().Any() возвращает true, модель недействительна.

public IEnumerable<ErrorInfo> GetErrors() { 
      return from prop in TypeDescriptor.GetProperties(this).Cast<PropertyDescriptor>() 
        from attribute in prop.Attributes.OfType<ValidationAttribute>() 
        where !attribute.IsValid(prop.GetValue(this)) 
        select new ErrorInfo(prop.Name, attribute.FormatErrorMessage(string.Empty)); 
     } 

Error Info Класс:

public class ErrorInfo{ 
public string Name { get; set; } 
public string FormatErrorMessage { get; set; }  

public ErrorInfo(string name, string formatErrorMessage){ 
    Name = name; 
    FormatErrorMessage = formatErrorMessage; 

} 
} 
Смежные вопросы