От моего валидатора я надеялся сделать что-то простое, вроде этого:
Код: Выделить всё
public class BookingEquipmentModelValidator : AbstractValidator // AKA ShipmentEquipmentModelValidator
{
public BookingEquipmentModelValidator()
{
RuleFor(be => be.BookingId).GreaterThan(0);
RuleFor(be => be.BookingSlotId).GreaterThan(0);
RuleFor(be => be.GeneralVentSetting).MaximumLength(50);
RuleFor(be => be.Comments).MaximumLength(254);
RuleFor(be => be.SealNumber).MaximumLength(15);
When(be => be.EquipmentId > 0, () =>
{
RuleFor(be => be.ActualEquipmentTypeId).Equals(be => be.FirstRequestedEquipmentTypeId).Or
.Equals(be => be.SecondRequestedEquipmentTypeId).WithMessage("No Match on either Req1 or Req2");
});
Код: Выделить всё
.Or- Если предоставлено оборудование (EquipmentId > 0), то тип оборудования (ActualEquipmentTypeId) должен соответствовать ЛИБО типу оборудования Request1 (FirstRequestedEquipmentTypeId), ИЛИ оборудованию Request2. Тип (SecondRequestedEquipmentTypeId).
- Если НИ ОДИН тип оборудования не соответствует фактическому, то должна быть возвращена ошибка проверки.
Я попробовал этот подход, но
Код: Выделить всё
When(be => be.EquipmentId is > 0, () =>
{
RuleFor(be => be.ActualEquipmentTypeId != be.SecondRequestedEquipmentTypeId && be.ActualEquipmentTypeId != be.FirstRequestedEquipmentTypeId).Equals(true);
});
Подробнее здесь: https://stackoverflow.com/questions/792 ... on-with-or
Мобильная версия