2016-05-24 1 views
1

Dears Je suis en train de valider la liste des objets à l'aide SetCollectionValidator et la liste compte a peut-être 0 objet ou plus d'objet si l'erreur de retour de validation jusqu'à ce que si la liste n'a pas un objet comme celuifluentvalidation SetCollectionValidator

public class SCRequest 
{ 
    public List<Attachment> Attachments { get; set; } 
} 

public class Attachment 
{ 
    public int AttachmentId { get; set; } 
    public string Name { get; set; } 
    public string FileType { get; set; } 
    public string FilePath { get; set; } 
    public string FileUrl { get; set; } 
} 

maintenant pour valider la ScRequest je fais ce qui suit

public SCRequestValidator() 
{ 
    RuleFor(request => request.Attachments) 
     .SetCollectionValidator(new AttachmentValidator()); 
} 

et pour valider l'attachement que je fais ce qui suit

public AttachmentValidator() 
{ 
    RuleFor(x => x.FileUrl) 
     .NotNull() 
     .WithMessage(ErrorMessage.B0001) 
     .NotEmpty() 
     .WithMessage("Not Allowed Empty"); 
} 

Je reçois l'erreur pas Not Allowed Empty lorsque la liste des pièces jointes a 0 objet, mon problème Je veux valider la liste seulement quand il a les valeurs.

Comment puis-je résoudre ce problème?

Répondre

4

Vous pouvez définir des règles/validateurs uniquement dans certains scénarios en utilisant When(). Dans votre exemple, le code sera quelque chose comme:

public SCRequestValidator() 
{ 
    When(request => request.Attachments.Any(),() => 
    { 
    RuleFor(request => request.Attachments) 
     .SetCollectionValidator(new AttachmentValidator()); 
    }); 
} 

Donc, s'il n'y a pas de pièces jointes, la CollectionValidator ne sera pas réglé.