je ces modèles:FluentValidation pour les propriétés imbriquées sur le InfoClient
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 contient beaucoup de domaines et j'ai un validateur séparé pour elle. Je ne souhaite avoir que Employee.Id et EventDate comme requis dans AssignmentTask et pas d'autres dans WorkOrderTaskDto, c'est pourquoi j'efface les validateurs en première ligne.
Fondamentalement, cela fonctionne bien mais seulement du côté serveur. Il me semble que Fluent génère des attributs de validation côté client uniquement pour les champs non imbriqués. Est-il possible d'avoir une validation côté client pour RuleFor(x => x.Dto.Employee.Id).NotEmpty();
?
Malheureusement, je ne peux pas créer différents validateurs pour WorkOrderTaskDto et simplement SetValidator() car dans ce cas, j'obtiendrai une exception dans la fabrique IoC FluentValidation concernant les types en double.
Merci pour la réponse. Malheureusement, je ne peux pas l'utiliser parce que: 1) Mes classes Dto sont dans l'assembly séparé et je ne veux pas ajouter d'attributs de validation pour eux. 2) J'utilise WorkOrderTaskDto dans plusieurs modèles et EventDate n'est requis que dans l'un d'entre eux. –