customevalidator 在验证期间未按预期工作

customevalidator is not working as expected during validation

您好,我正在使用自定义验证器根据复选框选中状态验证文本框..

如果复选框选中为 false 并且文本框为空,它应该会抛出一个错误,如所需的 CertID 那样...我在此方法中放置了断点 "cvCertId_OnServerValidate" 当我单击提交按钮时它根本没有命中。 ..

但是当我点击提交按钮时我无法得到错误..

这是我的 aspx 代码

<div class="SearchLine">
            <div class="Firstlbl">
                <asp:Label ID="Lbl1" runat="server" Text=" CertificateID *" Font-Bold="True"></asp:Label>
            </div>
            <div class="firstTxtBox">
                <asp:TextBox ID="txtCertificateID" runat="server" Width="300px"></asp:TextBox>
                </div>
            <div class="rfvValidation">
          <asp:CustomValidator ID="cvCertId" runat="Server"  OnServerValidate="cvCertId_OnServerValidate" Display="Dynamic" ValidationGroup="Validate" CssClass="validationerror"></asp:CustomValidator>
            </div>
        </div>
        <div class="SearchLine">
            <div class="chkboxLine">
                <asp:CheckBox ID="chkSerialNumber" runat="server" AutoPostBack="True" OnCheckedChanged="chkSerialNumber_CheckedChanged" />
            </div>
            <div class="Firstlbl">
                <asp:Label ID="Lbl2" runat="server" Text="Serial Number *" Font-Bold="True"></asp:Label>
            </div>
            <div class="firstTxtBox">
                <asp:TextBox ID="txtCertificateSerialNumber" runat="server" Width="300px" Enabled="false"></asp:TextBox>
            </div>
            <div class="rfvValidation">
               <asp:CustomValidator ID="cvSerialNumber" runat="Server"   OnServerValidate="cvSerialNumber_OnServerValidate" Display="dynamic" ValidationGroup="Validate" CssClass="validationerror"></asp:CustomValidator>
            </div>
        </div>

   <div class="SearchResetControls">
            <asp:Button ID="btnSubmit" runat="server" Text="Re-Assign" 
                onclick="btnSubmit_Click" ValidationGroup="Validate"/>
        </div>
         <div runat="server" id="divMessage">
        <asp:Label ID="lblMessage" runat="server" Text=""></asp:Label>
    </div>

这是我的aspx.cs代码

    protected void cvCertId_OnServerValidate(object sender, ServerValidateEventArgs args)
    {
        if (chkSerialNumber.Checked == false)
        {
            string certID = txtCertificateID.Text;
            if (certID == string.Empty)
            {
                ((CustomValidator)sender).ErrorMessage = "Required Certificate Id";
                args.IsValid = false;
            }
        }
    }

    protected void cvSerialNumber_OnServerValidate(object sender, ServerValidateEventArgs args)
    {
        if (chkSerialNumber.Checked == true && string.IsNullOrEmpty(txtCertificateSerialNumber.Text))
        {
            ((CustomValidator)sender).ErrorMessage = "Required Certificate Serial Number";
            args.IsValid = false;

        }
    }

请问有人帮忙吗

非常感谢....

您需要删除自定义验证控件中的 ControlToValidate 属性。并添加 Text 和 ErrorMessage 属性。例如,

<div class="firstTxtBox">
    <asp:TextBox ID="txtCertificateSerialNumber" runat="server" Width="300px" Enabled="false"></asp:TextBox>
</div>
<div class="rfvValidation">
    <asp:CustomValidator ID="cvSerialNumber" runat="Server"   OnServerValidate="cvSerialNumber_OnServerValidate" Display="dynamic" ValidationGroup="Validate" CssClass="validationerror" Text="Error" ErrorMessage="This is error message"></asp:CustomValidator>
</div>