webdevqa.jp.net

MVC 4クライアント側の検証が機能しない

ASP.net MVCの基本を学習しようとしても、クライアント側の検証が機能しない理由を十分に理解できません。

私は両方のweb.configファイルにこれを持っています(1はグローバルです1はビューフォルダにあります)

<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />

_layout.cshtmlファイルにこれがあります

@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/Scripts/jquery.validate.unobtrusive.min.js")
@Scripts.Render("~/Scripts/jquery.validate.min.js")

これは、IMが登録をテストする私のビューモデルです。

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; }
    }

そして、これは私の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" />


}

ここに投稿したくありませんでしたが、ここで関連するいくつかのトピックを読みましたが、送信をクリックすると、投稿/取得リクエストを行っているときに私の問題を解決できないようです。

22
Larry

これは動作するはずですのように感じます、validate.unobtrusive.min.jsの前にvalidate.min.jsをロードする必要があると思います

25
Adil

私は同様の問題があり、それを修正した唯一のことは手動で呼び出すことでした

 $.validator.unobtrusive.parse($('form'));

送信ボタンを押す前に。

最後にドキュメント準備コールバックに入れました。

$(function () {
    $.validator.unobtrusive.parse($('form'));
});
10
Gudradain

ページでは、ページの下部にこれらの2行があります

注意してください

@section Scripts {
 @Scripts.Render("~/bundles/jqueryval")
}
3
J.B.Vala

控えめなものの前にjquery.validate.min.jsをロードしないためです。

2
Amin Saqi
$('#divParent').load("url",
                     function () {
                     $.validator.unobtrusive.parse($('form'));}
                );

注:これは、ajax呼び出しを使用して「div」内で「form」または「PartialView」を動的にロードする場合に必要です。

0

私の友人の検証が必要なすべてのページでこれらのファイルを参照する必要があります!

<script src="~/Scripts/jquery.validate.js"></script>