c# - 实现 IValidatableObject 时 ValidationContext 的目的是什么

标签 c# .net-4.0 ivalidatableobject

我已经多次实现 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 容器传递给验证属性和验证方法的扩展点。 例如,您可以使用它来针对数据库进行验证,而无需在模型中设置对 dbcontext 的依赖性。

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

相关文章:

c# - 如何通过反射执行带有可选参数的私有(private)静态方法?

wcf - 将 .NET 4 WCF 服务定位为 64 位的问题

asp.net - IValidatableObject 验证方法在 DataAnnotations 失败时触发

c# - 模型枚举字段的 ASP.NET 自定义错误消息

c# - 如何确定所有排列 &|层次结构中的组合

c# - Entity Framework 6 中的直接导航属性

c# - 抵御 System.Collections.Concurrent.ConcurrentDictionary 中的竞争条件

java - Unity3D - 从 Android 调用静态方法

c# - SequenceEqual 总是返回 false