2016-10-17 1 views
0

Je développe une application Web ASP.Net MVC 5 et j'utilise FluentValidation (https://github.com/JeremySkinner/FluentValidation) pour la validation. J'ai des problèmes avec la clause .When() dans laquelle je ne peux pas le faire fonctionner. Cependant, je peux obtenir les goûts des clauses .NotEmpty() et .Length() fonctionnant.Fluent Validation When Clause

Ceci est ma classe viewmodel

[Validator(typeof(ViewModelEmployerValidator))] 
public class ViewModelEmployer 
{ 
    public string CurrentLineManagerEmail { get; set; } 
    public string NewLineManagerEmail { get; set; } 
} 

public class ViewModelEmployerValidator : AbstractValidator<ViewModelEmployer> 
{ 
    public ViewModelEmployerValidator() 
    { 
     RuleFor(x => x.NewLineManagerEmail).NotEmpty().When(x => x.CurrentLineManagerEmail == "").WithMessage("Please enter your new Line Manager Email"); 
    } 
} 

Mon rasoir Voir

<div> 
    <div class="form-group"> 
     @Html.TextBoxFor(model => model.CurrentLineManagerEmail, new { @class = "form-control", placeholder = "Current Line Manager Email" }) 
     @Html.ValidationMessageFor(model => model.CurrentLineManagerEmail) 
    </div> 
</div> 

<div> 
    <div class="form-group"> 
     @Html.TextBoxFor(model => model.NewLineManagerEmail, new { @class = "form-control", placeholder = "New Line Manager Email" }) 
     @Html.ValidationMessageFor(model => model.NewLineManagerEmail) 
    </div> 
</div> 

Lorsque l'utilisateur soumet le formulaire, même si la zone de texte CurrentLineManagerEmail est laissé vide, la validation .Lorsque() ne qui ramasse la règle et demande à l'utilisateur d'entrer son nouveau courrier électronique.

Toutefois, comme indiqué ci-dessus, les goûts de .NotEmpty() et .Length() ou leur propre travail bien. Ce n'est que lorsque j'ajoute la clause .When() que la validation semble échouer.

Quelqu'un peut-il aider s'il vous plaît?

Merci.

+2

Est- –

+0

vous attend la validation du côté client ('' avec jquery.validate.unobtrusive.js' FluentValidation ne supporte pas '.Lorsque())' When' ne fonctionne pas à côté client, mais sur le côté serveur, je n'ai pas eu de problème avec ça –

+0

@StephenMuecke Hi Stephen. Oui j'attendais la validation du client avec le '.When()'. Y a-t-il de toute façon autour de ça? – tgriffiths

Répondre

0

FluentValidation a un soutien limité pour la validation côté client:

Notez que FluentValidation travaillera également avec la validation côté client de ASP.NET MVC, mais pas toutes les règles sont pris en charge. Par exemple, les règles définies à l'aide d'une condition (avec Quand/Sauf), les validateurs personnalisés ou les appels à Must ne seront pas exécutés côté client. Les validateurs suivants sont pris en charge sur le client:

  • NotNull/NotEmpty
  • Matches (regex)
  • InclusiveBetween (plage)
  • CreditCard
  • Email
  • EqualTo (comparaison de l'égalité croisée propriété)
  • Longueur

(De https://fluentvalidation.codeplex.com/wikipage?title=mvc)