0

Текущий проект:Вложенное место (x => x.Condition = значение,() => {}); fluentvalidation

  • ASP.NET 4.5.1
  • MVC 5

мне нужно, если я могу гнездо знать When() заявления, как это:

When(x => x.Cond1 == val1, 
() => { 
    When(x => x.SubCond1 == SubVal1, 
    () => { 
     When(x => x.Final1 == finalVal1, 
     () => { 
      RuleFor(x => x.Field1) 
       .NotEmpty().WithMessage("Should not be empty"); 
      // a few more here 
      }); 
     When(x => x.Final2 == finalVal2, 
     () => { 
      RuleFor(x => x.Field8) 
       .NotEmpty().WithMessage("Should not be empty"); 
      // a few more here 
      }); 
     }); 
    When(x => x.SubCond2 == SubVal2, 
    () => { 
     RuleFor(x => x.Field16) 
      .NotEmpty().WithMessage("Should not be empty"); 
     // a few more here 
     }); 
    }); 

Поскольку последнее, что я хочу, состоит в том, чтобы украсить поля 30+ формы следующим образом:

RuleFor(x => x.Field1) 
    .NotEmpty().WithMessage("Should not be empty") 
    .When(x => x.Cond1 == val) 
    .When(x => x.SubCond1 == SubVal1) 
    .When(x => x.Final1 == finalVal1); 

Это просто несостоятельно.

Ни одно из условий не требует проверки, так как ни одно из них не является фактически редактируемыми пользователем полями (только значения, выбираемые пользователем); Мне просто нужно сравнить их с известными значениями. Я бы использовал инструкцию if/else, если бы это было более уместно, а это не так.

Модель в значительной степени плоская, только для второго уровня When(), представляющая импортированную модель, а третий уровень - это разные способы обработки определенных полей в импортируемой модели.

+0

Вы пытались это сделать? –

+0

Да, и это, похоже, не стреляет. –

+0

Уточнение: похоже, он не стреляет, поэтому я задал вопрос. –

ответ

1

Вы не можете, но можете попробовать и использовать Rule Sets, чтобы группировать свои правила вместе. Также, возможно, проверьте Cascade Mode.

+0

Оказывается, я строю как свои модели, так и свою проверку. Очистили оба, и теперь все снова работает хорошо. Моя проблема заключалась в том, что моя форма была химерой - она ​​содержала контент из двух разных первичных моделей, которые были условно на странице, в зависимости от того, какую роль у пользователя была, а затем для каждой роли была модель адреса, привезенная где-то от одного до трех раз , и это само по себе также было обусловлено необходимостью того, нужен ли другой адрес для каждой цели. Я отвлек все модели и сделал то же самое для проверки. –

+0

В конце концов, только 'When (x => x.cond1 == val1,() => {});' мне нужен был подраздел подсистемы Address, где пользователю была представлена ​​страна/государство & zip/province & postal параметры, которые необходимо обрабатывать в самый раз. –

+0

Я бы поставил это как победу. – Tarek

 Смежные вопросы

  • Нет связанных вопросов^_^