无法使用 ajax 控件进行验证

unable to validate using ajax control

<asp:Label ID="lblSearch" runat="server" Text="Search Prefix"></asp:Label>
                <asp:TextBox ID="txtSearch" MaxLength="2" runat="server" Width="80px"></asp:TextBox>
                <asp:RequiredFieldValidator runat="server" ID="rfvSearch" ControlToValidate="txtSearch" Display="None" ErrorMessage="Please enter &lt;b>Prefix.</b>" ValidationGroup="searchRegion"/>
                <ajaxToolkit:ValidatorCalloutExtender runat="Server" ID="vceSearch" TargetControlID="rfvSearch" HighlightCssClass="validatorCalloutHighlight" />
                <asp:RegularExpressionValidator ID="revRegion" runat="server" ErrorMessage="Please enter &lt;b>valid Numeric value.</b>"  ControlToValidate="txtSearch" Display="None" ValidationExpression="^\d+$"></asp:RegularExpressionValidator>
                <ajaxToolkit:ValidatorCalloutExtender ID="vceRegion" runat="server" TargetControlID="revRegion" /> 

 protected void btnSearch_Click(object sender, EventArgs e)
    {

    }

我为 txtsearch 添加了验证(仅数字)。当我在文本框中输入错误的数据 (AA) 时,我会收到带有验证消息的弹出窗口。 但是当我点击搜索按钮时,它将在 c#

中执行服务器端代码

我怎样才能阻止它并想在转到 btnSearch_Click 中的 c# 代码之前验证它??

当我在 c# 中添加以下代码时

 this.Validate();
 if (IsValid)
 { }

它不是第二次验证(每次 isvalid 都是 false,即使它是数字)

有人能帮帮我吗?

您可以使用 javascript 来验证您的控件,如下所示

function isNumber(evt) {
            evt = (evt) ? evt : window.event;
            var charCode = (evt.which) ? evt.which : evt.keyCode;
            if (charCode > 31 && (charCode < 48 || charCode > 57)) {
                return false;
            }
            return true;
        }

        function isAlphabets(evt) {
            evt = (evt) ? evt : window.event;
            var charCode = (evt.which) ? evt.which : evt.keyCode;
            if ((charCode > 64 && charCode < 91) || (charCode > 96 && charCode < 123))
                    return true;            
            return false;