1

我已按照 Internet 中的步骤设置密码验证。

我正在使用 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"];

            ......
        }

当我在调试模式下单击提交按钮时,它会跳转到此索引函数而无需验证。

为什么?我错过了什么?请帮忙。

我按照这个简单的验证演示

感谢那些回答问题的人。你给了我解决问题的方法。

  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。

在 1,2 之后,验证是正常的。

4

2 回答 2

2
  1. 除非您 OPed 的代码粘贴错误,否则您的括号/括号不匹配。该document.ready()功能未正确关闭 - 您错过了关闭});

  2. required不是“要求”

    $('#resetForm').validate({
            rules: {
                txtPwd: {
                    required: true, minlength: 6, maxlength: 20
                },
                txtPwd2: {
                    required: true, equalTo: '#txtPwd', minlength: 6, maxlegth: 20
                }
            },
            messages: {
                txtPwd: {
                    required: "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"
                }
            }
        });
    
于 2012-11-21T06:56:54.870 回答
1

您似乎在手动编写 jquery 验证脚本,而不是依赖于 ASP.NET MVC 中内置的不显眼的 jquery 验证。如果是这种情况,请确保jquery.validate.unobtrusive您的页面中永远不会引用该脚本。此外,在 ASP.NET MVC 4 Internet 模板中,还有一个~/bundles/jqueryval包含此脚本的包,因此请确保您从未将其包含在您的页面或布局中。

您只需要jqueryjquery.validate脚本。还要检查您的 javascript 控制台以确保没有任何错误。

于 2012-11-21T06:40:58.000 回答