我有一个INotifyDataErrorInfo
的实现,它可以像我期望的那样使用Data Annotations,但我真正想知道的是我如何进行条件验证。
假设我有3个文本框,名称,电子邮件和地址。我将Name作为必填字段,但我只需要输入电子邮件 OR 地址,因此验证规则需要检查这两个属性中的一个是否具有值。 / p>
希望这是有道理的,有人能够引导我朝着正确的方向前进。
答案 0 :(得分:2)
添加属性:
[Required(AllowEmptyStrings = true)]
到类的元数据定义中的Email
和Address
的属性声明。这将允许字符串为空,但是当它不是正常的验证规则时将启动。所以如果你添加类验证器:
[CustomValidation(typeof(MyValidator), "ValidationMethod")]
然后可以在此方法中检查是否已设置这两个值中的一个。
public static ValidationResult ValidationMethod(MyClass person, ValidationContext context)
{
if (person!= null)
{
if (string.IsNullOrWhiteSpace(person.Email) &&
string.IsNullOrWhiteSpace(person.Address)
{
return new ValidationResult(....);
}
}
return ValidationResult.Success;
}