J'ai cette règle de validation couramment:FluentValidation régnerez affectée par Lorsque la condition qui suit une autre doit se prononcer
RuleForEach(tvm => tvm.Task.Executors).Cascade(CascadeMode.StopOnFirstFailure).Must((tvm, exec) => { return exec.Deadline.HasValue ? exec.Deadline.Value.Date >= DateTime.Now.Date : true; }).
When(tvm=>!tvm.Task.Instructed).
WithMessage("Deadline can't be earlier than today").
Must((tvm,exec)=>{ return exec.Deadline.HasValue ? exec.Deadline.Value.Date >= tvm.Task.InstructDate.Value.Date : true; }).
When(tvm=>tvm.Task.Instructed).
WithMessage("Deadline can't be earlier than the instructed date").
Must((tvm, exec) => { return exec.InstructionId == (int)Instructions.TakeOwnership ? exec.Deadline != null : true; }).
WithMessage("Enter deadline");
Comme vous pouvez le voir, il y a 3 règles de MUST. Les 2 premiers sont liés à la condition Quand. Le problème que j'ai est, la seconde Lorsque la condition affecte la première règle de Must. Par exemple, si tvm.Task.Instructed
est faux, et Deadline
entré est 2016-06-22
(et en tenant compte du fait que la date actuelle est 2016-06-23) je m'attendrais à recevoir le message Deadline can't be earlier than today
. Mais je ne reçois pas ce message parce que la seconde Lorsque vérifie si tvm.Task.Instructed
est vrai et retourne false. Il semble donc que la condition affecte non seulement la règle qui en découle. Je voudrais vraiment écrire ces règles couramment une ligne. Est-ce possible ou je n'ai pas d'autre choix que de les définir séparément.