.NET MV 4 Remoteリモート検証の注意事項とケース

8675 ワード

まずモデルコード
public class LoginModel

    {

        [Required]

        [Display(Name = " ")]

        [Remote("CheckName", "Account", ErrorMessage = " ")]

        public string UserName { get; set; }



        [Required]

        [DataType(DataType.Password)]

        [Display(Name = " ")]

        public string Password { get; set; }



        [Required]

        [Display(Name = " ")]

        //[Remote("CheckValidateCode", "Account", ErrorMessage = " ")]

        [Editable(true)]

        public string ValidateNumber { get; set; }

    }

コントローラ:
       [HttpGet]

        [AllowAnonymous]

        [OutputCache(Location = System.Web.UI.OutputCacheLocation.None, NoStore = true)]   // 

        public JsonResult CheckName(string UserName)

        {



            if (UserName.Length > 10)

            {

                return Json(true, JsonRequestBehavior.AllowGet);



            }

            else

            {

                return Json(" ", JsonRequestBehavior.AllowGet);

            }

        }  

 
ビューページ
@model UMoney.Site.Models.LoginModel

@{

    ViewBag.Title = "";

    Layout = "~/Views/Shared/_Layout.cshtml";

}



<h2>Login</h2>

@using (Html.BeginForm(new { ReturnUrl = ViewBag.ReturnUrl })) {

    @Html.AntiForgeryToken()

  @Html.ValidationSummary(true)

    <fieldset>

        <legend>“ ” </legend>

        <ol>             <li>

                @Html.LabelFor(m => m.ValidateNumber)

                @Html.EditorFor(m => m.ValidateNumber)

                <img id="valiCode" style="cursor: pointer;" src="/Account/GetValidateCode" alt=" " onClick="javascript:this.src='/Account/GetValidateCode?'+ Math.random()" />  



                @Html.ValidationMessageFor(m => m.ValidateNumber)

            </li>

            <li>

                @Html.LabelFor(m => m.UserName)

                @Html.EditorFor(m => m.UserName)

                @Html.ValidationMessageFor(m => m.UserName)

            </li>

            <li>

                @Html.LabelFor(m => m.Password)

                @Html.PasswordFor(m => m.Password)

                @Html.ValidationMessageFor(m => m.Password)

            </li>





        </ol>

        <input type="submit" value=" " />

    </fieldset>

    <p>

        @Html.ActionLink("Register", "Register") ( )。

    </p>

} 

 @Scripts.Render("~/bundles/jquery")

    

 @Scripts.Render("~/bundles/jqueryval")

 
注意しなければならないのは
 @Scripts.Render("~/bundles/jquery")    @Scripts.Render("~/bundles/jqueryval")
参照されるJSバインドファイルの順序を逆転することはできません
@Scripts.Render("~/bundles/jqueryval")
 @Scripts.Render("~/bundles/jquery")
これにより、romoteリモート検証は無効になります.
これはページ生成のコードです


    


逆転できない理由もjquery検証ファイルです



jqueryプライマリファイルより先にインポートできません


だから必ず導入順序に注意して、私はこの問題に注意していないで、2時間振り回して、崩壊します!