2017-02-17 4 views
-1

Je n'ai jamais entendu parler de FluentValidation jusqu'à aujourd'hui alors que je travaillais sur un projet, j'ai donc rencontré un problème. J'ai ce ..Comment appliquer la validation à un champ si un autre champ est vide avec FluentValidation?

RuleFor(x=>x.Company) 
    .NotEmpty() 
    .WithMessage("Company Required"); 
RuleFor(x => x.FirstName) 
    .NotEmpty() 
    .WithMessage(FirstName Required"); 
RuleFor(x => x.LastName) 
    .NotEmpty() 
    .WithMessage("LastName Required"); 

et un tas d'autres RuleFor statements.What que je dois faire est ..

Si le champ est vide, la société nécessite une validation pour FirstName et LastName, mais si le champ Société est pas vide alors ne pas appliquer la validation à Prénom et Nom

Je n'ai aucune idée par où commencer.

EDIT

J'ai essayé le when et est venu avec cette

When(x => x.Company == "" || x.Company == null,() => 
    { 
    RuleFor(x => x.FirstName) 
    .NotEmpty() 
    .WithMessage("FirstName Required"); 

    RuleFor(x => x.LastName) 
    .NotEmpty() 
    .WithMessage("LastName Required"); 
    }); 

et je « pense » qui aurait dû déclencher la validation pour FirstName et LastName, mais il n'a pas .

Alors j'ai essayé cette façon

When(x.Company.length == 0,() => 
    { 
    RuleFor(x => x.FirstName) 
    .NotEmpty() 
    .WithMessage("FirstName Required"); 

    RuleFor(x => x.LastName) 
    .NotEmpty() 
    .WithMessage("LastName Required"); 
    }); 

et la même chose est arrivé, la validation et LastName FirstName n'a pas eu lieu.

+1

[Spécifier une condition avec Quand/À moins] (https://github.com/JeremySkinner/FluentValidation/wiki/d.-Configuring-a-Validator#user-content-specifying-a-condition-with -whenun) – jmoerdyk

+0

@jmoerdyk, je regarde cela maintenant – Chris

+0

ma confusion est la pose dans le quand parce que les exemples montrent comment cela fonctionnerait avec un bool et pas une chaîne – Chris

Répondre

0

Votre première tentative d'utilisation de l'instruction When aurait dû fonctionner. C'est ce qui a fonctionné pour moi.

When(x => string.IsNullOrWhiteSpace(x.Company),() => { 
    RuleFor(x => x.FirstName) 
     .NotEmpty() 
     .WithMessage("{PropertyName} Required"); 

    RuleFor(x => x.LastName) 
     .NotEmpty() 
     .WithMessage("{PropertyName} Required"); 
});