Сравнить Validator без RequiredFieldValidator?

Так что я искал повсюду и не могу найти похожую проблему.

По сути, это похоже на использование CompareValidator не работает без RequiredFieldValidator,

<div class="control-group">
                <label class="control-label" for="PositionName">
                    Password:</label>
                <div class="controls">
                    <asp:TextBox ID="txtPassword" runat="server" TextMode="Password"></asp:TextBox>
                    <%--<asp:RequiredFieldValidator ID="rvPassword" runat="server" ControlToValidate="txtPassword"
                        ErrorMessage="Please Enter Password" SetFocusOnError="True" ValidationGroup="1"
                        CssClass="error"></asp:RequiredFieldValidator>--%>
                </div>
            </div>
            <div class="control-group">
                <label class="control-label" for="PositionName">
                    Confirm Password:</label>
                <div class="controls">
                    <asp:TextBox ID="txtConfirmPassword" runat="server" TextMode="Password"></asp:TextBox>
                    <asp:RequiredFieldValidator ID="reqConPass" runat="server" ControlToValidate="txtConfirmPassword"
                        ErrorMessage="Please Enter Confirm Password" SetFocusOnError="True" ValidationGroup="1"
                        CssClass="error"></asp:RequiredFieldValidator>
                    <asp:CompareValidator ID="compPassword" runat="server" ControlToValidate="txtConfirmPassword"
                        ControlToCompare="txtPassword" ErrorMessage="Password Mismatch" SetFocusOnError="True"
                        ValidationGroup="1" CssClass="error"></asp:CompareValidator>
                </div>
            </div>

В принципе, вы можете видеть, что у меня есть RequiredFieldValidator закомментировано для обоих пропуска и подтверждения пропуска. Когда я делаю это, я могу представить только значение в txtPassword textbox и ничего в txtConfirmPassword textbox,

Если я раскомментирую RequiredFieldValidators тогда он сравнивается как надо.

Если это помогает, причина, по которой мне нужно это сделать, заключается в том, что я не могу расшифровать пароль и заполнить текстовое поле их текущим паролем. Поэтому, когда пользователь редактируется, ему нужно будет каждый раз вводить новый пароль с RequiredFieldValidator в теме.

Таким образом, мое решение состояло в том, чтобы избавиться от RequiredFieldValidator и просто проверьте, является ли текст нулевым или пустым, и если это так, не обновляйте пароль, но если это не так, обновите пользователя без обновления пароля.

Я надеюсь, что это имеет смысл, и если кто-то может помочь, я был бы очень признателен.

Если вам нужна дополнительная информация, пожалуйста, спросите.

Еще раз спасибо!

2 ответа

Вот одна мысль, я также в конечном итоге использовал это решение:

Как насчет настройки валидатора сравнения для проверки текстового поля пароля и сравнения его с подтверждением. Таким образом, валидатор сравнения срабатывает, только если в текстовом поле пароля есть значение.

<div class="control-group">
    <label class="control-label" for="PositionName">Password:</label>
    <div class="controls">
        <asp:TextBox ID="txtPassword" runat="server" TextMode="Password"/>      
    </div>
</div>
<div class="control-group">
    <label class="control-label" for="PositionName">Confirm Password:</label>
    <div class="controls">
        <asp:TextBox ID="txtConfirmPassword" runat="server" TextMode="Password"/>       
        <asp:CompareValidator ID="compPassword" runat="server" ControlToValidate="txtPassword"
                      ControlToCompare="txtConfirmPassword" ErrorMessage="Password Mismatch" SetFocusOnError="True"
                      ValidationGroup="1" CssClass="error"/>
    </div>
</div>

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

 <script>
        function Validate() {            
            if (document.getElementById('<%=txtPassword.ClientID %>').value != "")
                ValidatorEnable(document.getElementById('<%=ConfirmPasswordRequired.ClientID %>'), true);
            else
                ValidatorEnable(document.getElementById('<%=ConfirmPasswordRequired.ClientID %>'), false);
        }
    </script>
 <p>
              Password
                <asp:TextBox ID="txtPassword" runat="server" TextMode="Password"></asp:TextBox>
               
                <asp:RegularExpressionValidator ID="PasswordRegularExpression" runat="server"
                    ErrorMessage="*Password must be at least 8 characters long and include at least one Special Character, one Number, and one Capital letter."
                    ValidationGroup="ValidationGroup1" ValidationExpression="^.*(?=.{8,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[\W]).*$"
                    ControlToValidate="txtPassword" >
                </asp:RegularExpressionValidator>
            </p>
            <p>
    Confirm Password:
                <asp:TextBox ID="txtConfirmPassword" runat="server" TextMode="Password"></asp:TextBox>
                <asp:RequiredFieldValidator ID="ConfirmPasswordRequired" runat="server" ControlToValidate="txtConfirmPassword"
                    ErrorMessage="*Confirm Password is required."
                    Enabled="false" ValidationGroup="ValidationGroup1"></asp:RequiredFieldValidator>
                <asp:CompareValidator ID="NewPasswordCompare" runat="server" ControlToCompare="txtPassword"
                    ControlToValidate="txtConfirmPassword"  ErrorMessage="*Confirm Password must match with the Password."
                    ValidationGroup="ValidationGroup1"></asp:CompareValidator>
            </p>
            <p>
                <asp:Button ID="Button1" runat="server" Text="Save" ValidationGroup="ValidationGroup1"
                    OnClick="Button1_Click" OnClientClick="Validate();" />
            </p>

Другие вопросы по тегам