CompareValidator没有RequiredFieldValidator?

And*_*bel 5 c# asp.net comparevalidator

所以我一直在寻找,似乎无法找到类似的问题.

基本上,似乎使用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>
Run Code Online (Sandbox Code Playgroud)

基本上,你可以看到我已经RequiredFieldValidator注释了传球和确认传球.当我这样做的时候,我只能提交一个值txtPassword textbox而且没有任何内容txtConfirmPassword textbox.

如果我取消注释,RequiredFieldValidators那么它应该进行比较.

如果它有帮助,我需要这样做的原因是因为我无法解密密码并使用当前密码自动填充文本框.因此,无论何时编辑用户,他们都需要每次输入一个新密码RequiredFieldValidator.

所以我的解决方案是摆脱它RequiredFieldValidator,只是检查文本是否为空或空,如果是,请不要更新密码,但如果不是,则更新用户而不更新密码.

我希望这是有道理的,如果有人能提供帮助,我会非常感激.

如果您需要更多信息,请询问.

再次感谢!

GMD*_*GMD 0

请参阅此代码片段,在第一个密码中,我使用了正则表达式验证器,一旦密码有效,我就启用了比较验证器。

 <script>
        function Validate() {            
            if (document.getElementById('<%=txtPassword.ClientID %>').value != "")
                ValidatorEnable(document.getElementById('<%=ConfirmPasswordRequired.ClientID %>'), true);
            else
                ValidatorEnable(document.getElementById('<%=ConfirmPasswordRequired.ClientID %>'), false);
        }
    </script>
Run Code Online (Sandbox Code Playgroud)
	<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>
Run Code Online (Sandbox Code Playgroud)