je le validateur enfant qui suit avec deux constructeurs un sans paramètre et l'autre objet parent qui passe comme paramètre:FluentValidation enfant Validator message Non Affichage
public class ChildValidator : AbstractValidator<Child>
{
public ChildValidator()
{
RuleFor(x => x.LastName)
.NotEmpty()
.WithMessage("Last Name is required");
}
public ChildValidator(Parent parent)
{
RuleFor(x => x.LastName)
.Equal(x => parent.LastName)
.WithMessage("Parent and child Last Name must be equal");
}
}
Parent validateur:
public class ParentValidator : AbstractValidator<Parent>
{
public ParentValidator()
{
RuleFor(x => x.LastName)
.NotEmpty()
.WithMessage("Last Name is required");
RuleFor(x => x.Children)
.SetCollectionValidator(parent => new ChildValidator(parent));
}
}
Modèles:
[FluentValidation.Attributes.Validator(typeof(ParentValidator))]
public class Parent
{
public string LastName { get; set; }
public virtual ICollection<Child> Children { get; set; }
}
[FluentValidation.Attributes.Validator(typeof(ChildValidator))]
public class Child
{
public string LastName { get; set; }
public int ParentId { get; set; }
public virtual Parent Parent { get; set; }
}
In Enfant vue partielle:
@using (Html.BeginCollectionItem("Children"))
{
@Html.HiddenFor(model => model.Id)
@Html.HiddenFor(model => model.ParentId)
@Html.EditorFor(model => model.LastName)
@Html.ValidationMessageFor(model => model.LastName)
La validation fonctionne correctement. Cependant, alors que le message pour le validateur sans paramètre est affiché, le message pour validateur avec paramètre ne l'est pas.
Comment l'enfant lié à la mère? Un-à-plusieurs? –
@PateeGutee One-to-Many. Question mise à jour – corix010
Où définissez-vous le validateur de collection? Je sais que vous dites qu'il existe un validateur pour l'enfant, mais ne devez-vous pas encore spécifier dans le validateur parent que les enfants utilisent un validateur de collection? –