Как сделать правила FluentValidation необязательными (пропустить проверку для нулевых/пустых строк)?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как сделать правила FluentValidation необязательными (пропустить проверку для нулевых/пустых строк)?

Сообщение Anonymous »

Структура проверки: < /p>

Код: Выделить всё

using FluentValidation;

namespace ASValidation.Validators.Common
{
public static class CommonValidators
{
// Validates address: max 200 chars, allowed chars only
public static IRuleBuilderOptions ValidateAddress(this IRuleBuilder rule)
{
return rule
.MaximumLength(200).WithMessage("Address cannot exceed 200 characters.")
.Matches(@"^[a-zA-Z0-9\s\-,.#]+$").WithMessage("Address contains invalid characters.");
}

// Validates captcha: required and must be true
public static IRuleBuilderOptions ValidateCaptcha(this IRuleBuilder rule)
{
return rule
.NotEmpty().WithMessage("Captcha is required.")
.Equal(true).WithMessage("Captcha must be verified.");
}

// Validates ID: required (not empty)
public static IRuleBuilderOptions ValidateId(this IRuleBuilder rule)
{
return rule
.NotEmpty()
.WithMessage("{PropertyName} is required.");
}

// Validates primary key ID: must not be default unless 0
public static IRuleBuilderOptions ValidatePrimaryKeyID(this IRuleBuilder rule)
{
return rule
.Must(id => id == 0 || id != default)
.WithMessage("{PropertyName} is required.");
}

// Validates custom ID: 5-20 chars, alphanumeric, no spaces, case insensitive
public static IRuleBuilderOptions ValidateCustomId(this IRuleBuilder rule)
{
return rule
.NotEmpty().WithMessage("ID is required.")
.MinimumLength(5).WithMessage("ID must be at least 5 characters long.")
.MaximumLength(20).WithMessage("ID must not exceed 20 characters.")
.Matches(@"^[a-zA-Z0-9]+$").WithMessage("ID must contain only alphanumeric characters and no spaces.")
.WithMessage("ID must be case insensitive.");
}

// Validates property is required (not empty)
public static IRuleBuilderOptions IsRequired(this IRuleBuilder rule)
{
return rule
.NotEmpty().WithMessage("{PropertyName} is required.");
}

// Validates page: must be greater than 0
public static IRuleBuilderOptions ValidatePage(this IRuleBuilder rule)
{
return rule
.GreaterThan(0)
.WithMessage("Page must be greater than 0.");
}
}
}
< /code>
Правила по потреблению структуры проверки в моем проекте API: < /p>
using ASValidation.Validators.Common;
using ASValidation.Validators.Entity;
using FluentValidation;
using Microsoft.AspNetCore.Mvc.ViewFeatures;

namespace agentservice.Validators
{
public class SubmitAgencyDetailsRequestDTOValidator : AbstractValidator
{
public SubmitAgencyDetailsRequestDTOValidator()
{
RuleFor(x => x.AsAgencyId).ValidateId();

RuleFor(x => x.RegisteredEmailId).NotEmpty().ValidateEmail();

RuleFor(x => x.WebsiteURL).ValidateAgentWebsiteUrl().When(x => !string.IsNullOrWhiteSpace(x.WebsiteURL));

RuleFor(x => x.AccessMethods).NotEmpty().IsRequired();

RuleFor(x => x.TypeOfBusinessID).ValidateId();
}
}
}
для создания правила проверки, которое проверяет только тогда, когда строковое свойство имеет значение (не нулевое/пустое). В настоящее время я использую .when (x =>! String.isnullorempty (x.property)) , но это словесно и повторяется.
Текущая реализация:

Код: Выделить всё

RuleFor(x => x.WebsiteURL)
.ValidateAgentWebsiteUrl()
.When(x => !string.IsNullOrEmpty(x.WebsiteURL)); // Want to simplify this
< /code>
Ожидаемая реализация < /p>
RuleFor(x => x.WebsiteURL)
.ValidateAgentWebsiteUrl()
.ValidateWhenNotEmpty(); // Custom extension method
Вопрос
Как я могу создать метод расширения validatewhennotempty () , который:

[*] Пропускает валидацию для нулевых/пустых струн
Работает с любой цепочкой валидатора (например, AplectAddes /> не запускает «Требуемые» ошибки для пустых полей < /li>
Общая версия, которая работает для всех типов данных < /li>
< /ul>

Подробнее здесь: https://stackoverflow.com/questions/796 ... empty-stri
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Проверьте коллекцию с помощью FluentValidation, возвращающего одну ошибку невыполнения правила для свойства.
    Anonymous » » в форуме C#
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Сумма нулевых и пустых значений в DataFrame Pandas
    Anonymous » » в форуме Python
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Как отключить проверку нулевых ссылок для папки
    Anonymous » » в форуме C#
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Пропустить первые пару строк при чтении строк в файле Python.
    Гость » » в форуме Python
    0 Ответы
    46 Просмотры
    Последнее сообщение Гость
  • Пропустить первые пару строк при чтении строк в файле Python.
    Гость » » в форуме Python
    0 Ответы
    65 Просмотры
    Последнее сообщение Гость

Вернуться в «C#»