2009-12-08 6 views
2

J'ai regardé le fichier MicrosoftMvcJQueryValidation.js qui est le calque entre votre page et l'objet jquery.validate dans ASP.NET MVC 2 Beta.Comment puis-je étendre la validation prête à l'emploi ASP.NET MVC2 pour valider les cartes de crédit/courriels?

Il autorisera tout type de règle de validation pris en charge par jquery.validate et comportera une manipulation spéciale supplémentaire pour les expressions, les chaînes, les plages et les champs obligatoires. S'il est un type de règle générique/inconnu il va juste passer à travers les paramètres comme celui-ci:

default: 
    __MVC_ApplyValidator_Unknown(rulesObj, 
     thisRule.ValidationType, thisRule.ValidationParameters); 
    break; 

Cependant - je ne peux pas à comprendre comment injecter des règles supplémentaires dans le JSON qui est généré par le cadre, par exemple comme 'email'. Normalement, les règles proviennent simplement des attributs tels que [Required].

Je sais qu'il y a beaucoup de points d'extensibilité pour remplacer l'ensemble du fournisseur de métadonnées de validation - mais je cherche un moyen simple.

Comment puis-je utiliser - par exemple, le 'e-mail' ou 'carte bancaire' validateurs en conjonction avec un modèle simple comme ceci:

LoginDetails public class { publique bool éditable {get; ensemble; }

[Required(ErrorMessage="Please enter your email")] 
    public string Username { get; set; } 

    [Required(ErrorMessage="Please enter your password")] 
    public string Password { get; set; } 
} 

Répondre

2

Pour différents types de données, vous pouvez conserver le message Requis, mais également ajouter différents attributs en dessous. Pour un e-mail et une voiture de crédit, un Regular Expression comme celui-ci fonctionnerait probablement mieux.

[Required(ErrorMessage="Please enter your email")] 
[RegularExpression(@"\b[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}\b", 
    ErrorMessage="Please enter a valid email address.")] 
public string Email { get; set; } 

[Required(ErrorMessage="Please enter your password")] 
[RegularExpression(@"^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$.", 
    ErrorMessage="Please enter a valid Credit Card.")] 
public string CreditCard { get; set; } 

Découvrez this, this et this lien pour plus d'informations.

+0

n'a pas été particulièrement impressionné du tout avec la validation de la carte de crédit jquery.validate (voir http://stackoverflow.com/questions/1864208). Je peux juste faire un onblur le faire manuellement. c'est probablement une bonne solution pour le courrier électronique si –

2

Utilisez un DataAnnotationsModelValidator

Comme this.

Servent comprend

/Scripts/jquery-1.3.2.js

/Scripts/jquery.validate.js

/Scripts/MicrosoftMvcJQueryValidation.js

Utiliser une fonction de validation

<script type="text/javascript"> 
    $.validator.addMethod("price", function(value, element, paras) { 
     if (value.length == 0) { 
      return true; 
     } 
     if (value > paras.minValue) { 
      var cents = value - Math.floor(value); 
      if (cents >= 0.99 && cents < 0.995) { 
       return true; 
      } 
     } 
     return false; 
    }); 
</script> 
Questions connexes