【问题标题】:customevalidator is not working as expected during validationcustomevalidator 在验证期间未按预期工作
【发布时间】:2015-01-22 05:23:58
【问题描述】:

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

如果复选框选中为 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;

        }
    }

有没有人帮忙解决一下

提前非常感谢....

【问题讨论】:

    标签: c# asp.net validation customvalidator


    【解决方案1】:

    您需要删除自定义验证控件中的 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>
    

    【讨论】:

    • 我已经改变了我的答案。我个人已经在我的电脑上测试了这个解决方案并且它正在工作。文本属性不是强制性的。但是需要 ErrorMessage 来显示消息,尤其是当您使用 ValidationSummary 控件时。
    猜你喜欢
    • 2013-01-21
    • 1970-01-01
    • 2018-01-27
    • 2012-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-15
    • 2021-09-21
    相关资源
    最近更新 更多