Essayer d'apprendre les bases d'ASP.net MVC et ne pas bien comprendre pourquoi la validation côté client ne fonctionne pas.
J'ai cela dans mes deux fichiers web.config (1 est global 1 est dans le dossier de vues)
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
J'ai ceci dans mon _layout.cshtmlfile
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/Scripts/jquery.validate.unobtrusive.min.js")
@Scripts.Render("~/Scripts/jquery.validate.min.js")
Voici mon modèle de vue pour lequel je teste l'enregistrement:
public class RegisterVM
{
[Required(ErrorMessage="Username Required")]
public string username { get; set; }
[RegularExpression(@"((?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,20})")]
[Required(ErrorMessage="Password Required")]
public string password { get; set; }
[Compare("password", ErrorMessage="Passwords do not match")]
public string passwordConfirm { get; set; }
}
Et c'est mon html
@using(@Html.BeginForm()){
@Html.LabelFor( model => model.username)
@Html.EditorFor( model => model.username)
@Html.ValidationMessageFor( model => model.username)<br />
@Html.LabelFor( model => model.password)
@Html.PasswordFor( model => model.password)
@Html.ValidationMessageFor( model => model.password)<br />
@Html.LabelFor( model => model.passwordConfirm)
@Html.EditorFor( model => model.passwordConfirm)
@Html.ValidationMessageFor( model => model.passwordConfirm)<br />
<input type="submit" value="Register" />
}
Je ne voulais pas poster ici, je lis quelques sujets sur ceux-ci mais je n'arrive pas à résoudre mes problèmes, quand je clique sur Soumettre, c'est pour faire des demandes de publication/recevoir.
On se sent comme ça devrait marcher , je pense que vous devez charger validate.min.js avant validate.unobtrusive.min.js
J'ai eu un problème similaire et la seule chose qui l'a corrigé était d'appeler manuellement
$.validator.unobtrusive.parse($('form'));
avant que j'appuie sur le bouton d'envoi.
Je l'ai finalement mis dans le rappel de document prêt.
$(function () {
$.validator.unobtrusive.parse($('form'));
});
Dans votre page, vous avez ces deux lignes en bas de la page
s'il vous plaît voir attentivement
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
C'est parce que vous ne chargez pas jquery.validate.min.js avant celui discret.
$('#divParent').load("url",
function () {
$.validator.unobtrusive.parse($('form'));}
);
Remarque: Ceci est requis si vous chargez 'formulaire' ou 'PartialView' dynamiquement dans 'div' à l'aide d'appels ajax
Vous avez juste besoin de référencer ces fichiers sur chaque page dont vous avez besoin de validation mon ami!
<script src="~/Scripts/jquery.validate.js"></script>