1

インターネットの手順に従って、パスワードの検証をセットアップしました。

ASP.NET MVC4+razor+jquery を使用していますが、検証が機能していないようです。コードは次のとおりです。

CSHTML:

@using (Html.BeginForm("Index","Home",FormMethod.Post,new { id="resetForm"}))
{

    <ol class="round">
    <li class="one">
        <h5>Select the Application.</h5>
        @model PWDManagementCenter.Models.UserApplicationModels

        @Html.DropDownListFor(x => x.selectedUserApp, Model.userApps)
    </li>

    <li class="two">
        <h5>Input Login ID of Application</h5>
        <input name="txtLogonId"   />
    </li>

    <li class="three">
        <h5>Input the new password</h5>
        <input id="txtPwd" name="txtPwd" type="password" />
        <h6>Retype the password</h6>
        <input id="txtPwd2" name="txtPwd2" type="password" /><p />
        <input id="btnSubmit" type="submit" value="Save" />
    </li>
</ol>
}

HTMLのJS:

<script src="/Scripts/jquery-1.7.1.js" type="text/javascript" />
<script src="/Scripts/jquery.validate.js" type="text/javascript" />
<script type="text/javascript">
    $(document).ready(function () {
        $('#resetForm').validate({
            rules: {
                txtPwd: {
                    require: true, minlength: 6, maxlength: 20
                },
                txtPwd2: {
                    require: true, equalTo: '#txtPwd', minlength: 6, maxlegth: 20
                }
            },
            messages: {
                txtPwd: {
                    require: "Password is required!",
                    minlength: "Password contains at least 6 characters",
                    maxlength: "Password contains at most 20 characters"
                },
                txtPwd2: {
                    equalTo: "Make sure input the same password as above"
                }
            }
        });


</script>

そしてコントローラー:

[HttpPost]
        public ActionResult Index(UserApplicationModels model)
        {
            string appName = model.selectedUserApp;
            string id = Request.Form["txtLogonId"];
            string newPwd = Request.Form["txtPwd"];
            string newPwd2 = Request.Form["txtPwd2"];

            ......
        }

デバッグ モードで送信ボタンをクリックすると、検証なしでこの Index 関数にジャンプします。

なんで?見逃したものはありますか?助けてください。

この簡単な検証デモに従います

質問に答えてくれた人に感謝します。あなたは問題を解決するために私にヒットをくれました。

  1. スクリプト タブは " </script>" ではなく" " で終わる必要があるため、この/>" <script src="/Scripts/jquery.validate.js" type="text/javascript" />" は機能しませんが、この " <script src="/Scripts/jquery.validate.js" type="text/javascript" ></script>" は機能します

  2. 1 の後、「jscript ランタイム エラー オブジェクトはこのプロパティまたはメソッドをサポートしていません」というランタイム エラーが発生しました。これは、jquery を 2 回含めているためです。

1,2 の後、検証は正常です。

4

2 に答える 2

1

jquery検証スクリプトを手動で記述しており、ASP.NETMVCに組み込まれている目立たないjquery検証に依存していないようです。この場合は、jquery.validate.unobtrusiveスクリプトがページで参照されていないことを確認してください。また、ASP.NET MVC 4インターネットテンプレートには、~/bundles/jqueryvalこのスクリプトを含むバンドルが含まれているため、ページまたはレイアウトにこのスクリプトを含めたことがないことを確認してください。

必要なのはjqueryjquery.validateスクリプトだけです。また、JavaScriptコンソールをチェックアウトして、エラーがないことを確認します。

于 2012-11-21T06:40:58.000 に答える