【发布时间】:2015-08-27 21:08:02
【问题描述】:
我有以下代码来验证实体:
public class AffiliateValidator : AbstractValidator<Affiliate>
{
public AffiliateValidator ()
{
RuleFor(x => x.IBAN).SetValidator(new ValidIBAN()).Unless( x => String.IsNullOrWhiteSpace(x.IBAN));
}
}
还有 ValidIBAN() 代码:
public class ValidIBAN : PropertyValidator
{
public ValidIBAN()
:base("IBAN \"{PropertyValue}\" not valid.")
{
}
protected override bool IsValid(PropertyValidatorContext context)
{
var iban = context.PropertyValue as string;
IBAN.IBANResult result = IBAN.CheckIban(iban, false);
return result.Validation == (IBAN.ValidationResult.IsValid);
}
}
}
所以,IBAN 类的 CheckIBAN 方法完成了这项肮脏的工作。
现在,我需要对另一个属性应用以下规则: 如果 DirectDebit (bool) 为真,则 IBAN 不能为空且必须有效。
我可以这样做:
RuleFor(x => x.DirectDebit).Equal(false).When(a => string.IsNullOrEmpty(a.IBAN)).WithMessage("TheMessage.");
但是我如何调用另一个规则,在这种情况下是 IBAN 的规则,以检查是否有效?
【问题讨论】:
-
我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。
-
@JohnSaunders:对不起。我不确定发布的标题是什么。不过下次会记住的。
-
"C# fluentvalidation 检查另一个规则"
标签: c# .net validation fluentvalidation