Текущий проект:Вложенное место (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()
, представляющая импортированную модель, а третий уровень - это разные способы обработки определенных полей в импортируемой модели.
Вы пытались это сделать? –
Да, и это, похоже, не стреляет. –
Уточнение: похоже, он не стреляет, поэтому я задал вопрос. –