PropertyComparisonValidatorAttribute类型的验证属性不能用于验证值

时间:2014-03-27 15:25:15

标签: c# wpf mvvm data-annotations

我正在使用PropertyComparisonValidatorAttribute

    [PropertyComparisonValidator("Last", ComparisonOperator.LessThan)]
    public int First
    {
        [...]
    }

    [PropertyComparisonValidator("First", ComparisonOperator.GreaterThan)]
    public int Last
    {
       [...]
    }

但是,当它有时间进行验证时,我会得到以下异常:

A validation attribute of type PropertyComparisonValidatorAttribute cannot be used to validate values

我不知道根据另一个属性的值验证一个属性的任何其他方法。为了清楚起见,在我的XAML表单中,我想验证用户输入第一个值小于第二个值或第二个值大于第一个值。

1 个答案:

答案 0 :(得分:1)

在ASP.NET WebAPI中使用自定义验证属性时,我遇到了类似的问题。 可以通过验证属性中直接定义规则集来修复它。

public class MyClass
{    
    [PropertyComparisonValidator("Last", ComparisonOperator.LessThan, Ruleset="Default")]
    public int First
    {
        [...]
    }

    [PropertyComparisonValidator("First", ComparisonOperator.GreaterThan, Ruleset="Default")]
    public int Last
    {
       [...]
    }
}

然后,当您需要将对象传递规则集验证为验证方法的参数时:

MyClass target = new MyClass();
// Fill your target with data.
ValidationResults result =  Microsoft.Practices.EnterpriseLibrary.Validation.Validation.Validate<MyClass>(target, "Default")