La validation côté Client ne fonctionne pas dans ASP.NET MVC5 avec Bootstrap
L'exécution de Visual Studio 2013, j'ai créé un nouveau ASP.NET MVC (5) du projet, avec Bootstrap.
Cependant, je ne suis pas en mesure d'obtenir discrète validation côté client travail.
Le modèle a [Required]
les attributs sur les propriétés et le point de vue a ValidationMessageFor...
balises pour chaque champ dans le formulaire.
Cependant, l'envoi du formulaire, le formulaire de publication de serveur avant de validation des messages apparaissent.
À l'aide de NuGet, j'ai installé jquery.validate
et jquery.validate.unobtrusive
et les ajouter à l'jquery bundle dans App_Start
.
Pourtant, elle continue à travailler pour poste à l'arrière du serveur. F12 outils de dev ne montre pas de JS erreurs/avertissements.
Quelqu'un d'autre a rencontré ce problème (peut rien voir du tout dans la relatives à la MVC 5 en particulier) et avez-vous des idées?
- Pouvez-vous vérifier le code html que sa génération si elle a le
data-val
et d'autres attributs de validation? - Merci. Oui, les données-val attributs sont tous là comme prévu
- Fonctionne lorsque vous retirez le JavaScript de Bootstrap?
- Merci. Non, malheureusement, ça ne marche pas.
- Je viens de créer un nouveau MVC application à partir du début et de la validation fonctionne sans aucun problème. Je ne peux pas pour la vie de me trouver une raison rationnelle pourquoi la première application ne fonctionne pas. J'ai de départ de copier le code et de vues sur un par un, donc si il s'arrête de fonctionner, je peux identifier la raison. Autres que que, totalement en dehors des idées.
- Pour faire suite à mon dernier message, j'ai migré le code et tous les points de vue sur la "nouvelle" application et tout cela fonctionne. Frustrant - n'est jamais arrivé au fond d'elle.
Vous devez vous connecter pour publier un commentaire.
J'ai eu le même problème. La solution consiste à ajouter .js référence à la page principale (_Layout.cshtml)
J'ai eu le même problème. En comparant le code HTML généré avec un site qui a travaillé, j'ai remarqué qu'à la fin du document, il y avait ceci:
...alors que le bundle ont été élargis comme ceci:
J'ai regardé dans App_Start/BundleConfig.cs, et bien sûr, JQuery validation bundle n'ont pas été définis dans
RegisterBundles
. J'ai dû ajouter:Pourquoi ce qui manquait, je ne sais pas. J'ai commencé avec une nouvelle, propre projet.
C'est assez pitoyable qu'il n'y a pas d'erreur de compilation lorsque vous faites référence à un indéfini bundle. Même dans ce cas, une erreur d'exécution serait mieux que le silence de l'échec. Autant de temps perdu!
EDIT: s'avère que je n'ai pas le JQuery de validation des scripts dans mon projet, que ce soit. J'ai dû les ajouter via NuGet ("Microsoft JQuery Discrète de Validation").
Avez-vous vérifié
<add key="ClientValidationEnabled" value="true" />
dans le web.config?Sinon, cela donne un bon aperçu: ASP.NET MVC 3: étapes à suivre pour discrète validation côté client de dynamique/contenu AJAX. Également valable pour MVC5.
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
résolu pour moi. (MVC5)Au bas de la page, ajouter:
et tout fonctionnera correctement.
_Layout.cshtml
pour moi.Depuis tour en utilisant MVC au lieu d'ajouter à chaque modification de la vue, vous pouvez ajouter dans le dossier partagé à _Layout.cshtml.
juste ajouter
@Scripts.Render("~/bundles/jqueryval")
au bas de _Layout.cshtml, sur le dessus de
@Scripts.Render("~/bundles/bootstrap")
@Scripts.Render("~/bundles/jqueryval")
dans ce cas, le script sera l'effet de chaque page qui utilise cette mise en page.
J'ai eu le même problème, ma solution est d'effacer tout l'historique dans le navigateur (cache, cookies, forme, ...) et tout fonctionne correctement.
J'ai eu le même problème lorsque je jouais avec mon premier projet MVC. La question est à la fin que je n'ai pas inclure les éléments d'entrée de l'élément de formulaire. Oui, très stupide. Assurez-vous de créer la forme, par exemple :
Je sais que c'est un peu tard pour le jeu, mais cela ajoute plus à la validation et je l'ai trouvé très utile. Parfois en conflit, javascript/jQuery Plugin/références API (eg:searchMeme.js) qui font référence à d'autres versions de jquery peut causer des problèmes, j'ai donc créer des faisceaux de connexion du compte actions. Ce sont ces étapes que je prendrais:
1. Créer une mise en page distincte ~/Views/Shared/_AccountLayout.cshtml pour AccountController.cs.
2. Créer de nouveaux ~/Compte/_ViewStart.csthml avec:
3. Créer deux ensembles de css & js dans BundleConfig.cs pour AccountController:
4. Référence les paquets dans les deux extrémités de tête & corps dans _AccountLayout.cshtml en tant que tel:
*REMARQUE: assurez-vous que le bootstrap est après jqueryval en bundle
5. Assurez-vous que vous avez
@Html.ValidationMessageFor
pour chaque champ de saisie dans ~/Compte/Login.cshtml, ~/Compte/s'Inscrire.cshtml, etc... respectivement.6. Utilisation DataAnnotations pour créer d'autres personnalisé erreurs de validation
[RegularExpression(@"^([\w]{2,20})@?([\w]{2,20}).?[a-zA-Z]{2,3}$", ErrorMessage="")]
:7. (facultatif) Enfin, si vous avez changé le DataAnotation de Mot de passe, puis vous DOIT également modifier la Stratégie de Mot de passe dans ~/App_Start/IdentityConfig.cs en tant que tel:
8. (facultatif) Aussi, découvrez ce l'article sur les Rôles etc..
Je pense que @Html.ValidationMessageFor est manquant à partir du modèle. Je ne reçois pas les erreurs, mais pas les messages.
Je suis de fournir cette réponse pour les futurs lecteurs.J'avais le même problème et a trouvé le problème est avec la séquence de la rendre scripts.
Assurez-Vous Que
est avant
dans _layout.cshtml .
La mise en page de la partie inférieure doit ressembler à suivre.