Validation asp.net mvc 3在模型上运行验证
如何在模型上运行所有DataAnnotation验证 我正在从代码构建一个模型实例,没有modelstate绑定或任何东西。我只想对它运行所有的验证。。。我正在使用EF CodeFirstValidation asp.net mvc 3在模型上运行验证,validation,asp.net-mvc-3,model,data-annotations,code-first,Validation,Asp.net Mvc 3,Model,Data Annotations,Code First,如何在模型上运行所有DataAnnotation验证 我正在从代码构建一个模型实例,没有modelstate绑定或任何东西。我只想对它运行所有的验证。。。我正在使用EF CodeFirst public class Category { public int Id { get; set; } [Required] public string Name { get; set; } } cat = new Category(); if (cat.IsValid()) {
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
我知道这可能是个愚蠢的问题,但我似乎在任何地方都找不到答案。这类似于。您可以添加类似以下内容的扩展方法:
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;
}
}
公共静态类ValidationExtension{
公共静态bool是有效的(这个T模型),其中T:class{
var validationResults=新列表();
var validationContext=新的validationContext(model,null,null);
TryValidateObject(模型、validationContext、validationResults、true);
返回validationResults.Count==0;
}
}
此问题的标题包括ASP.net MVC
请注意,Validator类和MVCs验证有细微的区别
例如:
var metadata = ModelMetadataProviders.Current.GetMetadataForType(() => model, model.GetType());
ModelValidator.GetModelValidator(metadata, ControllerContext).Validate(null);
可能重复的