Je suis en train de valider la liste des entrées objet dans mon WebAPI 2.Courant de validation ne fonctionne pas pour objet de liste
mais ce n'est pas valider. Modelstate est toujours défini sur true.
Exemple de code:
public class A
{
public int Id { get; set; }
public string Name { get; set; }
}
public class ClassAValidator : AbstractValidator<A>
{
public classAValidator()
{
RuleSet("ClassA",()=>{
RuleFor(x => x.Id).NotEmpty().WithMessage("The Idcan't be Empty or Zero");
RuleFor(x => x.Name).NotEmpty().Length(10).WithMessage("Name Should be Six Char length");
});
}
}
Note: Le champ de chaîne, nous devons être exactement 6 caractères.
Api:
[HttpPut]
public async Task<IHttpActionResult> Put([FromBody] List<A> alist)
{
if(!ModelState.IsValid) throw new InvalidDataException(ModelState,"Data Validation Failed for Upload Class A");
// Model State is Always true
}
Quelqu'un peut-il indiquer ce que j'ai manqué?
Mise à jour: J'ai essayé comme indiqué dans Should i create a new Type for Collection in FluentValidation?
mais ayant la même question.
Résolu Mise à jour:
problème est l'utilisation de Ruleset a provoqué la validation ne se Déclenché. En enlevant "RuleSet" cela a fonctionné même sans avoir la définition de la classe List [A] Validator. Message de Jeremy Skinner: Le premier problème est que vos règles sont enveloppées dans un jeu de règles, elles ne seront donc jamais exécutées. Les ensembles de règles sont opt-in, et l'intégration automatique n'appelle que des règles ne figurant pas dans un ensemble de règles.
désolé oublié d'ajouter constructeur .. Oui, j'ai effectivement – RajGan