Свободная проверка разрешает пустое или значение со структурой

#c# #fluentvalidation

#c# #плавная проверка

Вопрос:

У меня есть sort prop, который может быть пустым или иметь такие значения, как:

 sort=""
sort=["name","desc"]
sort=["name","asc"]


RuleFor(r => r.Sort)
                .NotEmpty()
                .When(nr => nr.Contains("name"))
                .WithMessage("Invalid Sort");
 

Как разрешить пустое и непустое, содержащее строку?

Комментарии:

1. Для какого типа вы используете r.Sort ? Так ли это string ? Так ли это IEnumerable<string> ? Что-то другое?

Ответ №1:

Вы могли бы просто указать пользовательское правило. Предполагается Sort , что string[] :

 RuleFor(r => r.Sort)
    .NotNull()
    .Must(x => x.Length == 0 || (x.Length == 2 amp;amp; x[0] == "name" amp;amp; 
        (x[1] == "desc" || x[1] == "asc")))
    .WithMessage(...);
 

И если вам нужно повторно использовать эту логику, просто используйте пользовательский конструктор правил, как описано здесь .