Je développe une application web en utilisant ASP .NET MVC 1.0 et jQuery (y compris le validation plugin). Le balisage côté serveur pour une « entité d'édition » typique se calcule comme suitComment puis-je obtenir la validation jQuery pour produire le même balisage que la validation ASP.NET MVC côté serveur?
<label for="FirstName">FirstName:</label>
<%= Html.TextBox("FirstName", Model.FirstName) %>
<%= Html.ValidationMessage("FirstName") %>
Lorsque des données non valide est affiché dans le champ FirstName, le résultat HTML est
<label for="FirstName">FirstName:</label>
<input type="text" value="" name="FirstName" id="FirstName" class="input-validation-error text">
<span class="field-validation-error">Please enter the first name.</span>
Ce qui est exactement ce que vous attendre de ASP .NET MVC hors de la boîte. J'ajoute maintenant la validation côté client avec jQuery, et je voudrais qu'elle se comporte exactement de la même manière - ie le contrôle d'entrée reçoit une classe d'entrée-validation-erreur et une plage est ajoutée avec une classe de field-validation-error, pour afficher le message d'erreur.
Je suis presque là, mais pas tout à fait. L'utilisation de l'option errorElement permet au validateur de créer une plage pour le message d'erreur, plutôt qu'une étiquette. L'utilisation de l'option errorClass signifie que l'élément input reçoit une classe d'entrée-validation-error. Le problème que j'ai, c'est que le message d'erreur aussi obtient une classe d'entrée-validation-erreur, et je veux qu'il ait une erreur de validation de champ. J'ai essayé d'utiliser les fonctions highlight et unhighlight pour corriger cela, mais dès que je commence à jouer avec les classes sur l'étendue, la validation elle-même cesse de fonctionner et envoie simplement le formulaire au serveur.
Quelqu'un a-t-il des idées sur la façon dont je peux résoudre ce problème? Merci.
Lorsque je travaillais sur un exemple légèrement différent, j'ai également rencontré un problème avec la classe field-validation-error supprimée. Je l'ai corrigé en changeant une partie de la ligne 621 de label.removeClass() à label.removeClass (this.settings.errorClass). J'utilise la version 1.6 du plugin, non-minifiée. – gilles27