Установите Fluent Validator по условию ⇐ C#
-
Anonymous
Установите Fluent Validator по условию
Я пытаюсь установить валидатор для `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
Я пытаюсь установить валидатор для `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
Мобильная версия