В основном, если у меня есть коллекция веществ
Код: Выделить всё
public class Substance
{
public int? SubstanceId { get; set; }
public string SubstanceName { get; set; }
public decimal? SubstanceAmount { get; set; }
public int? SubstanceUnitId { get; set; }
public int? SubstanceRouteId { get; set; }
public DateTimeOffset? SubstanceTime { get; set; }
}
- имеют ли SubstanceAmount и SubstanceUnitId значения, и
- если SubstanceRouteId имеет значение и
- если SubstanceTime имеет значение
для любого из элементов вещества.
Я хочу отправить по одному сообщению об ошибке для каждого из правил, если они не выполняются, а не для каждого вещества, что происходит сейчас со следующим:Итак, если у меня есть пять веществ иКод: Выделить всё
RuleForEach(x => x.SubstanceList).SetValidator(new SubstanceValidator(RuleSetsToApply)); public class SubstanceValidator : AbstractValidator { public SubstanceValidator(List RuleSetsToApply) { string ruleSetName = "SubstanceAmountUnit"; RuleSet(ruleSetName, () => { RuleFor(x => x.SubstanceAmount).NotNull().NotEmpty(); RuleFor(x => x.SubstanceUnitId).NotNull().NotEmpty().GreaterThan(0); }); ruleSetName = "SubstanceIngestion"; RuleSet(ruleSetName, () => { RuleFor(x => x.SubstanceTime).NotNull().NotEmpty(); }); ruleSetName = "SubstanceRoute"; RuleSet(ruleSetName, () => { RuleFor(x => x.SubstanceRouteId).NotNull().NotEmpty().GreaterThan(0); }); } } - первое вещество не соответствует Правилу №2,
- третий не соответствует Правилу №1 и №2 и
- четвертый не соответствует Правилу №3,
Я ожидаю, что для каждого правила будет возвращена одна ошибка, даже несмотря на то, что правило №2 не удалось выполнить дважды.
Подробнее здесь: https://stackoverflow.com/questions/667 ... -error-for