0

バックエンド データベースでユーザーのパスワードを更新する Web サイトのパスワード リセット機能に取り組んでいます。強力なパスワード、つまり Password123 を入力して、ユーザーのパスワードを変更することに成功しました。また、MVC アーキテクチャは、十分に弱いパスワード、つまり abc を入力するときは十分満足していますが、一致しないパスワードと確認を入力すると、つまり Password123! と Password1234! 次に、次の行のオブジェクト参照エラーに関連するエラーが発生します。

@using (Html.BeginForm("Reset", "Reset", new { qString = Model.QueryString } ))

これが私のコードの全文です:

@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
@model ......ResetModel

<script type="text/javascript">
$(document).ready(function () {
    $('#close').click(function (event) {
        closeAjax();

        event.cancelBubble = true;
        event.returnValue = false;
        event.preventDefault();
        event.stopPropagation();
    });
});

$(document).ready(function () {
    $("#index").validate({
        rules: {
            password: {
                required: true, minlength: 6
            },
            confirmpassword: {
                required: true, equalTo: "#password", minlength: 6
            }
        },
        messages: {
            password: "Please enter your new password.",
            c_password: "Please confirm your new password."

        }
    });
});

</script>
<div class="form_container">
    <div class="logo">
        <a href=""><img class="logo" src="@Url.Content("~/Content/SP_Logo_white.png")" alt="Cloud"/></a>
    </div>
        <div class="reset">
           <h3>Password Reset</h3>
         <div class="reset-help">
      <p>Forgot your password? Use the form to change or reset your password.</p>
    </div>
    @using (Html.BeginForm("Reset", "Reset", new { qString = Model.QueryString } ))
    {
    <label for="reset">UserName:</label>
    <input type="text" id="username" name="username" /><br />
    <label for="password">New Password:</label>
    <input type="password" id="password" name="password" /><br />
    <label for="confirmpassword">Confirm Password:</label>
    <input type="password" id="confirmpassword" name="confirmpassword" />
    <p><input type="submit" id="submit" value="Submit" /></p>
    }
</div>
</div>

パスワードが一致しない場合にのみこれが発生する理由を誰かが理解するのを手伝ってくれますか?また、JavaScript検証が設定されていない理由も理解できません

レンダリングされた HTML は次のとおりです。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>Password Reset</title>
    <link href="/Content/Site.css" rel="stylesheet" type="text/css" />
    <script src="/Scripts/jquery-1.5.1.min.js" type="text/javascript"></script>
    <script src="/Scripts/modernizr-1.7.min.js" type="text/javascript"></script>
</head>
<body>
<img src="/2.jpg" alt="Big Pic" class="bg" />
    <div class="top_40"></div>

        <section id="main">

<script type="text/javascript">
    $(document).ready(function () {
        $('#close').click(function (event) {
            closeAjax();

            event.cancelBubble = true;
            event.returnValue = false;
            event.preventDefault();
            event.stopPropagation();
        });
    });

    $(document).ready(function () {
        $("#index").validate({
            rules: {
                password: {
                    required: true, minlength: 6
                },
                c_password: {
                    required: true, equalTo: "#password", minlength: 6
                }
            },
            messages: {
                password: "Please enter your new password.",
                c_password: "Please confirm your new password."

            }
        });
    });

</script>
<div class="form_container">
    <div class="logo">
        <a href=""><img class="logo" src="/Content/SP_Logo_white.png" alt="Cloud"/></a>
    </div>
        <div class="reset">
          <h3>Password Reset</h3>
        <div class="reset-help">
          <p>Forgot your password? Use the form to change or reset your password.</p>
        </div>
<form action="/Reset/Reset?qString=qKkQBXYEsY0GthEqFIuWYfXQ1CKcUioxpbY8vfhqN9nlOcHrZdLIYzxxhtV0YK73" method="post">        <label for="reset">UserName:</label>
        <input type="text" id="username" name="username" /><br />
        <label for="password">New Password:</label>
        <input type="password" id="password" name="password" /><br />
        <label for="confirmpassword">Confirm Password:</label>
        <input type="password" id="confirmpassword" name="confirmpassword" />
        <p><input type="submit" id="submit" value="Submit" /></p>
</form>    </div>
    </div>

        </section>
        <div class="bottom_80"></div>

</body>
</html>
4

1 に答える 1

1

jQuery Validate プラグインがまったく機能しないという大きな問題がいくつかあります。

1)script Validate プラグインインクルードをコードに追加していません。jqueryインクルードののどこscriptかに、次のようなものが必要です...

 <script src="/Scripts/jquery.validate.min.js" type="text/javascript"></script>

2)に添付.validate()しました$('#index')id="index"あなたのページのどこに も表示されません。適切に機能させたい場合は、要素indexの である必要があります。例:idform.validate()

jQuery :

$(document).ready(function() {
    $('#formID').validate({
        ...

HTML :

<form id="formID">
    ...

3)内部の「パスワードの確認」フィールドを誤って.validate()として選択しましc_passwordた。このキーは、フィールドの属性と一致する必要があります。これは実際には HTML に従っています。nameconfirmpassword

<input type="password" id="confirmpassword" name="confirmpassword" />

動作デモ: http://jsfiddle.net/6RHDP/

于 2013-05-22T20:02:49.093 に答える