asp.net mvc 3在模型上运行验证

ale*_*poi 2 validation model code-first data-annotations asp.net-mvc-3

如何在模型上运行所有DataAnnotation验证?

我正在从代码构建一个模型实例,我没有没有模型状态绑定或任何东西.我只想对它进行所有验证......我正在使用EF CodeFirst.

public class Category
{
    public int Id { get; set; }

    [Required]
    public string Name { get; set; }
}

cat = new Category();
if (cat.IsValid()) { /* blah */ } // i want something like this
Run Code Online (Sandbox Code Playgroud)

我知道这可能是一个愚蠢的问题,但我似乎无法在任何地方找到答案..

bka*_*aid 5

这类似于关于单元测试数据注释的这个问题.您可以添加类似于此的扩展方法:

public static class ValidationExtension {

    public static bool IsValid<T>(this T model) where T: class {
        var validationResults = new List<ValidationResult>();
        var validationContext = new ValidationContext(model, null, null);
        Validator.TryValidateObject(model, validationContext, validationResults, true);
        return validationResults.Count == 0;
    }
}
Run Code Online (Sandbox Code Playgroud)