(я отправил тот же ответ на форуме 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).