Проверка NotEmpty для нескольких полей - PullRequest
0 голосов
/ 18 июня 2019

У меня есть форма с некоторыми полями NotEmpty.Теперь я всегда могу написать правило для каждого поля и написать одно и то же сообщение для каждого.Я надеялся, что есть лучший способ написать это.Может быть, напишите это в одной строке и перечислите все поля.

Я пробовал приведенный ниже код, но, похоже, он не работает. Я даже не уверен, что это близко к ответу.Я искал везде, но я не могу найти пример.Я также посмотрел на документацию, не повезло.Извините, если ответ очевиден, он был в моей голове в течение последнего часа.

RuleFor(x => new { x.FirstField, x.SecondField, x.ThirdField, x.FourthField }).NotEmpty().WithMessage("Field cannot be null");

1 Ответ

0 голосов
/ 29 июня 2019

Библиотека не позволяет этого. Но, как сказал Роман, вы можете написать расширение, например, так:

public class MyAbstractValidator<T> : AbstractValidator<T>
{
    public IEnumerable<IRuleBuilderInitial<T, TProperty>> RuleForParams<TProperty>(params Expression<Func<T, TProperty>>[] expressions)
    {
        return expressions.Select(RuleFor);
    }
}

public static class RuleBuilderInitialExtensions
{
    public static void ApplyForEach<T, TProperty>(this IEnumerable<IRuleBuilderInitial<T, TProperty>> ruleBuilders, Action<IRuleBuilderInitial<T, TProperty>> action)
    {
        foreach (var ruleBuilder in ruleBuilders)
        {
            action(ruleBuilder);
        }
    }
}

public class CustomerValidator : MyAbstractValidator<Customer>
{
    public CustomerValidator()
    {
        RuleForParams(x => x.FirstField, x => x.SecondField, x => x.ThirdField).ApplyForEach(x => x.NotEmpty().WithMessage("Field cannot be null"));
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...