Сообщение об ошибке не отображается для типа Nullable в FLuentValidation - PullRequest
1 голос
/ 28 июля 2011

У меня проблема с проверкой данных.

Я хочу проверить валидацию, поэтому свойство должно быть заполнено больше, чем другое свойство. вот код:

public decimal? MonthlySalesNet { get; set; }
public decimal? MonthlySalesGross { get; set; }

и вот проверка:

RuleFor(x => x.MonthlySalesGross.Value).GreaterThan(x => x.MonthlySalesNet.Value)
            .When(x => x.MonthlySalesGross != null && x.MonthlySalesNet != null)
            .WithMessage("blahblah");

проверка работала, но сообщение не отображалось. я что-то упустил?

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

1 Ответ

2 голосов
/ 28 июля 2011

(я отправил тот же ответ на форуме FV )

Сообщение не отображается, так как считает, что оно связано с неправильным свойством. Когда вы используете RuleFor (x => x.MonthlySalesGross.Value), оно связывает правило со свойством «Значение», а не со свойством MonthlySalesGross.

FluentValidation v3 добавляет улучшенную поддержку обнуляемых значений (я писал об этом здесь ), но в настоящее время это работает только с постоянными значениями, а не с выражениями, которые ссылаются на другие свойства. Я планирую расширить поддержку Nullable для работы с валидаторами перекрестных свойств с версией 3.1, но сейчас вы можете обойти это, вручную переопределив имя свойства. Это повторно свяжет ошибку с правильным свойством:

RuleFor(x => x.MonthlySalesGross.Value)
    .GreaterThan(x => x.MonthlySalesNet.Value)
    .When(x => x.MonthlySalesGross.HasValue)
    .OverridePropertyName("MonthlySalesGross");

(обратите внимание, что вы также должны включить нулевую проверку в предложение When).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...