Effectuer une validation de champs cachés
J'ai la vue ci-dessous:
@Html.LabelFor(m => m.CompanyPostCode)
@Html.TextBoxFor(m => m.CompanyPostCode)
@Html.LabelFor(m => m.CompanyCity)
@Html.TextBoxFor(m => m.CompanyCity)
@Html.HiddenFor(m => m.CompanyCityID)
Tous les attributs sont marqués comme [Obligatoire] dans mon modèle de vue. Puis le problème, c'est que mon CompanyCityID (Requis) est caché et donc aucune validation n'est effectuée dans la vue. Si je montre cet attribut de mon point de vue, la validation est faite.
Ma question: est-il possible d'effectuer une validation sur un champ caché? Une solution de contournement existe pas?
Il peut semble un peu étrange pour valider un champ caché. La raison en est que ce champ est rempli à partir de jQuery basé sur des règles spéciales. Si il n'est pas rempli, je sais que quelque chose n'est pas valide sur la vue.
Grâce.
OriginalL'auteur Bronzato | 2012-04-13
Vous devez vous connecter pour publier un commentaire.
La raison possible peut-être qu'il n'est
ignore: ':hidden'
ligne dansjquery.validate.unobtrusive.js
fichier.Après la version 1.9.0 c'est un comportement par défaut. Vous pouvez corriger manuellement en ajoutant
Comme vous pouvez le voir ici
J'ai vraiment hate d'être ce gars qui corrige les gens, mais les ignorer paramètre n'est pas défini par jquery.validate.unobtrusive.js. Aussi, soyez conscient de la façon dont setDefaults fonctionne avant de l'utiliser. Si vous définissez les valeurs par défaut après que vous avez déjà câblé la validation du formulaire, puis vous êtes trop en retard avec cet appel. Veuillez voir mon écriture pour une explication plus approfondie. stackoverflow.com/questions/8466643/...
peut-être que quelque chose a changé depuis que j'ai écrit cette réponse. À l'époque, j'ai vérifié jquery.validate.unobtrusive.js et d'ignorer le réglage était là.
Excellente réponse, j'étais à la recherche de ce pour comme 3 heures... "je VOUS Remercie, Chuck Norris!" (comme dans le film Dodgeball avec Vince Vaughn)
Gardez à l'esprit que vous ne pas au -
$.validator.setDefaults({ ignore: [] });
dans un$(document).ready
que ce sera trop tard. Si vous ne pouvez pas le faire, utilisez:$('form').validate().settings.ignore = []
OriginalL'auteur Chuck Norris
Vous pouvez aussi commenter cette ligne dans le jquery.validate.js fichier.
ignorer: "cachés"
OriginalL'auteur user973671
Si vous n'avez pas à utiliser javascript dans votre Controller, et dans votre action, de la vue, vous pouvez ajouter un modèle d'erreur avant de valider votre modèle. Exemple:
OriginalL'auteur nrtn93
Vous pouvez toujours mettre
@Html.HiddenFor(m => m.CompanyCityID)
à l'intérieur d'un div caché et de le modifier pourEditorFor()
.CSS
Vue
OriginalL'auteur Matija Grcic