0

登録フォームがあります。パスワードに次のような6文字が含まれているかどうかを確認しています:

<input type="password" runat="server" name="password" size="41" maxlength="64" id="txtpassword" /><span>*</span>&nbsp;&nbsp;&nbsp;&nbsp;
<asp:RequiredFieldValidator ID="RequiredFieldValidator8" runat="server" ErrorMessage="Fill in a password." ControlToValidate="txtpassword"></asp:RequiredFieldValidator>
                    &nbsp;
<asp:CustomValidator ID="CustomValidator1" runat="server" OnServerValidate="valPassword" ErrorMessage="Password must be 6 characters long." ControlToValidate="txtpassword"></asp:CustomValidator>&nbsp;(at least 6 characters)

コードビハインド

protected void valPassword(object source, ServerValidateEventArgs args)
{
    args.IsValid = ValidatePassword(args.Value);
}

private bool ValidatePassword(string pw)
{
    if (pw.Length >= 6)
    {
        return true;
    }
    else 
    { 
        return false; 
    }
}

RequiredFieldValidator と CustomValidator を連携させて 1 文字入力すると、フォームは受け入れられます。

RequiredFiekdValidator を削除してフォームに入力すると、パスワードフィールドに文字がまったくないフォームが受け入れられます

CustomValidator を離れて 1 文字入力すると、フォームが受け入れられます

CustomValidator が正しく機能していません。何が欠けていますか?

4

2 に答える 2

0

txtpassword を<asp:Textbox>入力の代わりに変更してみてください。

于 2010-08-31T17:56:00.260 に答える
0

おそらく名前とIDの問題ですか?私は通常、混乱を避けるために要素の名前と ID を一致させようとします。

于 2010-08-31T18:16:36.297 に答える