数据注释验证

时间:2011-05-05 14:04:17

标签: c# .net asp.net-mvc-3

在asp.net mvc3上我正在使用dataanotations进行验证。我使用简单的if(ModelState.IsValid)控制我的控制器上的验证。如何在简单的类中控制这些验证,而不是控制器?

谢谢!

3 个答案:

答案 0 :(得分:1)

这几乎就是MVC验证器在幕后所做的事情:

这将迭代所有注释并计算我们是否有任何错误并将它们添加到错误集合中。最好将它放在基类中,然后让所有其他类继承它。如果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));
        }

错误信息类:

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

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

 }
}

答案 1 :(得分:1)

在这里回答(w / .net 4): Using ASP.Net MVC Data Annotation outside of MVC

答案 2 :(得分:1)