我们正在使用DataAnnotations
来验证我们的模型。
我们模型的一个非常简化的版本如下:
public class Model
{
public List<Thing> Things;
}
public class Thing
{
[Required]
public string Name {get;set;}
}
现在有趣的一点是,如果我创建一个没有名称的Thing
并将其添加到模型中,我本应该期望验证失败,但它通过了(惊讶!)。
var model = new Model ();
var invalidThing = new Thing (); // No name would fail validation
model.Things.Add(invalidThing );
var validationContext = new ValidationContext(model);
var validationResults = new List<ValidationResult>();
var isValid = Validator.TryValidateObject(model, validationContext, validationResults, true);
Assert.False (isValid); // This fails!
我认为这是因为在验证模型时,它验证每个属性,但不验证属性中的项(如果它是一个集合)。
Things
是一个没有验证的属性,所以它通过了验证(尽管它包含无效的项目)。我们如何确保验证还验证集合属性中的项?是否有一些现成的验证器可供使用?
Dictionary<string,Thing>
的属性,那么您能否期望“Validator”对该属性执行验证? - Reza Aghaei