У меня есть эти модели:FluentValidation для вложенных свойств на стороне клиента
public class AssignmentTaskModel
{
public AssignmentTaskModel() { }
public AssignmentTaskModel(WorkOrderTaskDto task)
{
Task = task;
}
public WorkOrderTaskDto Task { get; set; }
}
public class AssignmentTaskModelValidator : AbstractValidator<AssignmentTaskModel>
{
public AssignmentTaskModelValidator()
{
RuleFor(x => x.Dto).Configure(x => x.ClearValidators());
RuleFor(x => x.Dto.Id).NotEmpty();
RuleFor(x => x.Dto.Employee.Id).NotEmpty();
RuleFor(x => x.Dto.EventDate).NotEmpty();
}
}
WorkOrderTaskDto содержит много полей и у меня есть отдельный валидатор для него. Я хочу иметь только Employee.Id и EventDate, как требуется в AssignmentTask, а не другие из WorkOrderTaskDto, поэтому я очищаю валидаторы в первой строке.
В принципе, он работает хорошо, но только на стороне сервера. Мне кажется, что Fluent генерирует атрибуты проверки на стороне клиента только для не-вложенных полей. Возможно ли подтверждение на стороне клиента для RuleFor(x => x.Dto.Employee.Id).NotEmpty();
?
К сожалению, я не могу создать различные валидаторы для WorkOrderTaskDto и просто SetValidator(), потому что в этом случае я получу исключение в фабрике IoC FluentValidation о повторяющихся типах.
Спасибо за ответ. К сожалению, я не могу использовать его, потому что: 1) классы My Dto находятся в отдельной сборке, и я не хочу добавлять к ним какие-либо атрибуты проверки. 2) Я использую WorkOrderTaskDto в нескольких моделях, а EventDate требуется только в одном из них. –