我已经实现了IValidatableObject几次,却从未发现将ValidationContext解析为Validate方法的目的是什么-我的典型IValidatableObject实现看起来像这样:

 public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
 {
    if (Prop1 == Prop2)
    {
        yield return new ValidationResult(
              "Prop1 and Prop2 must be different.",
              new[] {"Prop1", "Prop2"});
    }
 }

有什么我可以使用validationContext错过的东西吗?

编辑:我正在使用ASP.NET MVC,这是在类中实现的-而不是在 Controller 中。

最佳答案

ValidationContext包含IServiceProvider属性。这是将DI容器传递给您的验证属性和Validate方法的扩展点。
例如,您可以使用它来针对数据库进行验证,而无需在模型中设置对dbcontext的依赖。

关于c# - 实现IValidatableObject时ValidationContext的目的是什么,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15498977/

10-11 02:11