Validator.TryValidateObject不validationRangeAttribute

鉴于以下目的,

public class Question { [Required] public string QuestionText { get; set; } [Range(1, 5)] public int Difficulty { get; set; } } 

使用以下validation码

 ICollection<ValidationResult> results = new List<ValidationResult>(); Question question = new Question(); ValidationContext ctx = new ValidationContext(question, null, null); Validator.TryValidateObject(question, ctx, results); // results.Length = 1 

为什么Range属性在Required中没有创buildvalidation错误(值显然是0)?

啊所以看来我需要指定validateAllProperties = true

 Validator.TryValidateObject(question, ctx, results, true); 

顺便说一下,抛出我的是,事实上,我有一个抽象的基类与其中的另一个属性,没有validateAllPropertiesvalidation将停止对所有超类的第一个错误。 所以你会得到每个超类的validation错误(在我的情况2)

Validator.TryValidatorObject(instance, validationContext, validationResults) Validator.TryValidateObject(instance, validationContext, validationResults, validateAllProperties)使用validateAllProperties = false调用Validator.TryValidateObject(instance, validationContext, validationResults, validateAllProperties)

当validateAllProperties为false ,只有RequiredAttribute会被validation。