Ошибки бизнес-правил не исчезают, когда данные действительны - PullRequest
0 голосов
/ 04 ноября 2018

Я использую 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 сообщение все еще отображается. Кроме того, я не уверен, почему некоторые элементы управления, связанные с полями, отображают ошибку, а другие не _это не является правилом проверки полей.

Можно ли выполнить вызов метода после добавления CustomerAddress в коллекцию Addresses?

i.imgur.com / eecAFuJ.png

1 Ответ

0 голосов
/ 04 ноября 2018

Убедитесь, что вы подняли свойство, измененное во всей коллекции, для проверки ошибок (например, RaisePropertyChanged (nameof (MyCollection)), иначе пользовательский интерфейс не сможет обновить результаты проверки.

Кроме того, я не уверен, почему некоторые связанные с полями элементы управления показывают ошибку и другие не _это не правило проверки поля.

Это вероятно из-за используемых по умолчанию стилей. Для большинства элементов управления Orchestra создает шаблон ошибки (декоратор), но не у каждого элемента управления есть это. Мы работали над их добавлением на прошлой неделе, поэтому я рекомендую попробовать последнюю версию Orchestra & Orc.Controls.

Также обязательно установите ValidateOnDataErrors и NotifyOnValidationErrors в привязке, чтобы показать валидацию в пользовательском интерфейсе.

...