Установите Fluent Validator по условиюC#

Место общения программистов C#
Ответить
Anonymous
 Установите Fluent Validator по условию

Сообщение Anonymous »



Я пытаюсь установить валидатор для `Address`, зависит от существования элемента, но я хочу использовать RuleFor и другие удобные методы, а не вручную регистрировать каждую ошибку с помощью `ValidationContext`, но кажется, что когда я Я пытаюсь сделать это через CustomAsync, он просто пропускается и правила для RequestAddressValidator пропускаются.

Есть ли у вас идеи, как заставить работать правила RequestAddressValidator?

public class RequestModel
{
public required string Id { get; init; }

public Address? Address { get; init; }
}

public class Address
{
public required string Line1 { get; init; }
public required string Line2 { get; init; }
}

public class RequestAddressValidator: AbstractValidator
{
public RequestAddressValidator()
{
RuleFor(x => x.Line1).NotEmpty();
RuleFor(x => x.Line2).NotEmpty();
}
}

public class RequestModelValidator: AbstractValidator
{
public RequestModelValidator(IApiClient apiClient)
{
RuleFor(x => x)
.Custom((requestModel, context) =>
{
var item = apiClient.GetByIdAsync(requestModel.Id);

if (item != null)
{
RuleFor(x => x.Address).SetValidator(new RequestAddressValidator());
}
});
}
}


Подробнее здесь: https://stackoverflow.com/questions/781 ... -condition
Ответить

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

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

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

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

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