ASP .Net MVC 3 discrète client personnalisé de validation
J'ai utilisé jquery validation plug-in pour un couple d'années maintenant, mais c'est ma première tentative à un mélange avec MVC 3 discrète de validation.
Renseignements sur le côté client de choses sont éparpillés sur l'internet et il est difficile de trouver quelque chose qui est assez profond pour expliquer aux gens qui ne l'ont pas encore utilisé. J'ai été brûler Google pour une heure maintenant pour un exemple sur la façon de créer un personnalisé programme de validation côté client.
@Html.TextBoxFor(model => Model.CCPayment.CardNumber, new { @class = "textInput validateCreditCard", maxLength = "20" })
$(document).ready(function () {
jQuery.validator.unobtrusive.adapters.add('validateCreditCard', {}, function (value, element) {
alert('foo');
});
});
si j'exécute le code ci-dessus dans le fond de mon point de vue, il ne fait absolument rien. J'ai même essayé de jquery.programme de validation.addmethod() et toujours rien. Tous les la validation côté client qui est émis à partir de mon modèle de validation des annotations fonctionne très bien.
<div class="ctrlHolder">
<label>
<em>*</em>
Card Number:
</label>
@Html.TextBoxFor(model => Model.CCPayment.CardNumber, new { @class = "textInput validateCreditCard", maxLength = "20" })
<p class="field-validation-valid formHint" data-valmsg-for="CCPayment.CardNumber"></p>
</div>
- Avez-vous d'inclure le script "jquery.validate.unobtrusive.js" dans votre page?
- oui... tous les autres la validation côté client fonctionne, dans mon modèle, j'ai quelques annotations faire les champs requis, et ils fonctionnent tous très bien. Je veux juste ajouter une coutume méthode de validation pour la validation du formulaire.
Vous devez vous connecter pour publier un commentaire.
Voici comment vous pouvez procéder. D'abord, vous devez écrire un validateur personnalisé attribut afin de s'assurer que la validation est exécutée sur le serveur. Vous pouvez utiliser celui qui est décrit dans ce post de blog:
Avis que j'ai modifié pour en faire mettre en œuvre les
IClientValidatable
de l'interface et ajout de laGetClientValidationRules
méthode qui utilise simplement le même message d'erreur de validation du client que du côté serveur et fournit un nom unique pour ce validateur qui sera utilisé par le jquery discrète de l'adaptateur. Maintenant tout ce qui reste est de décorer votre propriété modèle avec cet attribut:et de votre point de vue:
data-*
attributs émis sur votre zone de texte pour la carte de travail. Vous devez effectuer votre logique de validation au moins sur le serveur. La la validation côté client à des fins esthétiques seulement.Vous avez besoin
ValidateFor
en plus deTextBoxFor
. Je ne peux pas dire à partir de votre question si vous avez déjà fait ça ou pas. Vous avez également besoin d'EnableClientValidation
avant la forme.ValidateFor
, alors vous ne verrez pas la validation côté serveur de messages. Dans MVC 2, la validation côté client ne fonctionne pas sans eux, soit.