我正在使用Orc.FluentValidation,并且有:
[ValidatorDescription(nameof(Customer), ValidationResultType.Error,
Orc.FluentValidation.ValidationType.BusinessRule)]
public class CustomerBusinessRuleValidator : AbstractValidator<Customer>
{
public CustomerBusinessRuleValidator()
{
RuleFor(x => x.Addresses).Must(x => x != null && x.Count > 0 && x.Any(add => add.IsCurrent))
.WithMessage("Customer object is required to have at least 1 current address.");
}
}
CustomerAddress
public class CustomerAddress : Entity
{
[DomainSignature] public Address Address { get; set; }
[DomainSignature] public Lookup AddressType { get; set; }
[DomainSignature] public bool IsCurrent { get; set; }
}
Customer
public class Customer : Entity
{
[DomainSignature]
public string Code { get; set; }
public Gender Gender { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string MiddleName { get; set; }
public DateTime DateOfBirth { get; set; }
public Lookup PlaceOfBirth { get; set; }
public string PhoneNumber { get; set; }
public string Email { get; set; }
public ICollection<CustomerAddress> Addresses { get; set; }
public Lookup Occupation { get; set; }
public IdDocument Id1 { get; set; }
public IdDocument Id2 { get; set; }
}
即使在为CustomerAddress
添加了IsCurrent = true
和Customer
的{{1}}的视图上,消息仍然显示。另外,我不确定为什么某些绑定到字段的控件会显示错误,而另一些则不是_this不是字段验证规则。
在将CustomerAddress
添加到Addresses
集合之后,是否有方法要调用?
i.imgur.com/eecAFuJ.png
答案 0 :(得分:0)
请确保引发整个集合的更改属性以进行错误验证(例如RaisePropertyChanged(nameof(MyCollection))),否则UI无法更新验证结果。
此外,我不确定为什么某些绑定到字段的控件会显示错误并 其他人不是_这不是字段验证规则。
这可能是 ,因为您使用的是默认样式。对于大多数控件,Orchestra创建一个错误模板(装饰器),但并非每个控件都具有此模板。上周我们一直在努力添加这些内容,因此我建议尝试使用Orchestra和Orc.Controls的最新Alpha版。
还要确保在绑定上设置ValidateOnDataErrors
和NotifyOnValidationErrors
以便在用户界面中显示验证。