Как работать с CustomValidator и RequiredFieldValidator вместе в ASP.NET? - PullRequest
0 голосов
/ 18 ноября 2011

У меня есть 3 текстовых поля, текущий пароль, новый пароль и пароль для подтверждения, и 3 RequiredFieldValidator для каждого текстового поля и один сравнитель для нового и подтверждающего пароля.

Я также использую CustomValidator, потому что я хочу проверить правильность текущего пароля. Поэтому я создал одну функцию javascript, которая проверяет текущий пароль.

Шаг:

1.Если текущий пароль неверен, отображается сообщение о том, что «текущий пароль неверен», что в порядке.

2.но он двигается вперед и также отображает предупреждающее сообщение «Новый пароль и поля подтверждения пароля должны быть идентичны». если оба не совпадают.

То, что я хочу, это то, что он не должен двигаться дальше, отображать сообщение на шаге 1.

Кто-нибудь знает, как это сделать?

Спасибо

PS:

ERROR

enter image description here

Ответы [ 2 ]

1 голос
/ 18 ноября 2011

Отключить CompareValidator, отключить клиентский скрипт для него и включить в текущем пароле метод проверки сервера CustomValidator в зависимости от результата проверки пароля:

Markup:

Current password: <asp:TextBox runat="server" ID="CurrentPassword" TextMode="Password" />
<asp:CustomValidator runat="server" ID="CurrentPasswordValidator" ValidateEmptyText="true"
ControlToValidate="CurrentPassword" OnServerValidate="CurrentPasswordValidator_ServerValidate"
ErrorMessage="current password is not correct" />
<br />
New Password: <asp:TextBox runat="server" ID="NewPassword1" TextMode="Password" />
<asp:RequiredFieldValidator runat="server" ControlToValidate="NewPassword1" >*</asp:RequiredFieldValidator>
<br />
Confirm Password: <asp:TextBox runat="server" ID="NewPassword2" TextMode="Password" />
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="NewPassword2" >*</asp:RequiredFieldValidator>
<asp:CompareValidator runat="server" ID="CompareNewPasswordsValidator"
     ControlToValidate="NewPassword2" ControlToCompare="NewPassword1" EnableClientScript="false"
     ErrorMessage="New Password and Confirm Password Fields must be identical" Enabled="false" />
<br /> 
<asp:Button ID="ResetPasswordButton" runat="server" Text="Reset Password" OnClick="ResetPasswordButton_Click" />

Код:

protected void CurrentPasswordValidator_ServerValidate(object source, ServerValidateEventArgs args)
{
    if (args.Value == "123")
    {
        args.IsValid = true;
        CompareNewPasswordsValidator.Enabled = true;
    }
    else
    {
        args.IsValid = false;
        CompareNewPasswordsValidator.Enabled = false;
    }
}

protected void ResetPasswordButton_Click(object sender, EventArgs e)
{
    if (IsValid)
    {

    }
}
0 голосов
/ 18 ноября 2011

Вы можете отключить валидатор в вашем скрипте следующим образом:

 var CmpValidator = document.getElementById('<%=CompareValidator1.ClientID%>');
 ValidatorEnable(CmpValidator, false); 

Позже, когда вы нажмете на кнопку клиента, вы можете включить его, например:

 var CmpValidator = document.getElementById('<%=CompareValidator1.ClientID%>');
 ValidatorEnable(CmpValidator, true); 
...