当数据有效时,业务规则错误不会消失



我正在使用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; }
}

在视图中,即使为Customer添加了带有IsCurrent = trueCustomerAddress,消息仍会显示。此外,我不确定为什么一些字段绑定控件显示错误,而另一些控件不显示错误。这不是字段验证规则。

在将CustomerAddress添加到Addresses集合之后,是否需要进行类似的方法调用?

i.imgur.com/eecAFuJ.png

请确保在整个集合上引发一个已更改的属性以进行错误验证(例如RaisePropertyChanged(nameof(MyCollection((,否则UI无法更新验证结果。

此外,我不确定为什么某些字段绑定控件显示错误和其他不是这不是字段验证规则。

这可能是,因为您使用的是默认样式。对于大多数控件,Orchestra都会创建一个错误模板(decorator(,但并不是每个控件都有这个模板。上周我们一直在努力添加这些,所以我建议尝试Orchestra&Orc.Controls.

还要确保在绑定上设置ValidateOnDataErrorsNotifyOnValidationErrors,以便在UI中显示验证。

相关内容

  • 没有找到相关文章

最新更新