我已经实施了 IValidatableObject
几次,从来没有发现解析的目的是什么 ValidationContext
验证方法是 - 我的典型 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,这是在类中实现 - 而不是在控制器中。
ValidationContext
包含 IServiceProvider
属性。它是将DI容器传递给验证属性和验证方法的扩展点。
例如,您可以使用它来验证数据库,而无需在模型中设置对dbcontext的依赖性。
ValidationContext
包含 IServiceProvider
属性。它是将DI容器传递给验证属性和验证方法的扩展点。
例如,您可以使用它来验证数据库,而无需在模型中设置对dbcontext的依赖性。
你应该检索 Prop1
和 Prop2
来自validationContext。从您的问题来看,很难说您是否正在使用WebForms(因此您具有与属性的代码绑定)或MVC(如果您在控制器中实现此功能)。
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (validationContext["Prop1"] == validationContext["Prop2"])
{
yield return new ValidationResult(
"Prop1 and Prop2 must be different.",
new[] {"Prop1", "Prop2"});
}
}