2011-10-17 3 views
0

Dans mon application, je souhaite implémenter la validation conditionnelle et je suis nouveau sur MVC. Mon code ressemble à ceci.Validation conditionnelle dans MVC

public class ConditionalValidation : IValidatableObject 
    { 
     public bool ValidateName { get; set; } 
     public String Name { get; set; } 

     public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) 
     { 
      if (ValidateName) 
      { 
       if (string.IsNullOrEmpty(Name)) 
       { 
        yield return new ValidationResult("*"); 
       } 
      } 
     } 
    } 

Mais quand j'accède vue de cette validation ne travaille ou je coché la case à cocher ou non et la page est la soumission sans vérifier la validation du côté client. J'ai vérifié le ModelState.IsVlaid au contrôleur mais est également true alors s'il vous plaît suggérer où je travaille.

Merci

+0

Eh bien j'ai vérifié qu'il fonctionne sur le côté serveur mais comme nous utilisons des validations simples sur le modèle, le framework mvc génère automatiquement des validations côté client mais dans ce cas non. donc il y a un moyen de le générer à partir du modèle au lieu d'écrire la validation auto javascript? – Abhishek

Répondre

1

Vous devez ajouter les attributs d'annotation de données requis.

Référence ici: http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.requiredattribute.aspx

Essayez cette ...

using System.ComponentModel.DataAnnotations; 

public class ConditionalValidation : IValidatableObject 
    { 
     public bool ValidateName { get; set; } 

     [Required([email protected]"Name is required")] 
     [Display(Name = "Name")] 
     public String Name { get; set; } 

     public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) 
     { 
      if (ValidateName) 
      { 
       if (string.IsNullOrEmpty(Name)) 
       { 
        yield return new ValidationResult("*"); 
       } 
      } 
     } 
    } 

MISE À JOUR: Aussi, assurez-vous que votre web.config a ce qui suit dans les <appsettings>:

<add key="ClientValidationEnabled" value="true" /> 
<add key="UnobtrusiveJavaScriptEnabled" value="true" /> 

et que vous h ave inclus les éléments suivants sur votre page:
jquery.validate.min.js
jquery.validate.unobtrusive.min.js

Voici quelques tutoriels: je trouve
Unobtrusive Client Validation in ASP.NET MVC 3
Exercise 4: Using Unobtrusive jQuery at Client Side

+0

C'est bon et travaille maintenant du côté client. Y at-il d'autres choses que je dois ajouter pour le client? – Abhishek