asp.net:CustomValidator-未首先启动

asp.net:CustomValidator-未首先启动,asp.net,vb.net,textbox,customvalidator,Asp.net,Vb.net,Textbox,Customvalidator,我已经让我的自定义验证器工作了,唯一的问题是它没有在其他任何事情之前启动,而是同时发生。是的,当参数不满足时,我会收到错误消息,但我也会收到应用程序的其余部分。在达到上述参数之前,我甚至不希望发生任何事情 我的意思是: <asp:TextBox ID="tbLocation" runat="server"></asp:TextBox> <asp:CustomValidator ID="valMatchLocation" runat="server" ControlT

我已经让我的自定义验证器工作了,唯一的问题是它没有在其他任何事情之前启动,而是同时发生。是的,当参数不满足时,我会收到错误消息,但我也会收到应用程序的其余部分。在达到上述参数之前,我甚至不希望发生任何事情

我的意思是:

<asp:TextBox ID="tbLocation" runat="server"></asp:TextBox>
<asp:CustomValidator ID="valMatchLocation" runat="server" ControlToValidate="tbLocation" 
     ErrorMessage="Please include date or date range." OnServerValidate="valMatchLocation_ServerValidate">&nbsp;</asp:CustomValidator>
在测试时,这确实是我想要的一部分;但是,此验证不会在应用程序的其余部分之前进行。例如:用户希望搜索一些不属于该用户特定Id的文档,因此,如果用户输入的Id不是他们的,则他们必须满足其他参数,然后才能实际进行搜索


请帮忙。我感到非常沮丧。尽管如此,我确信我遗漏了一些愚蠢的东西:{

您使用过自定义验证器的客户端验证吗

您可以使用以下内容:

VB代码:

valMatchLocation.ClientValidationFunction = "ValidateSomething";
valMatchLocation.EnableClientScript = true;
Javascript:

function ValidateSomething(sender, args)
{
    //Your code here   
    //if (condition)
    { //satisfied
        args.IsValid = true;
    } 
    else
    {
        args.IsValid = false;
    }
}
这可以解决您的问题,因为验证发生在回发到服务器之前


希望这有帮助!!!

Hmmm我认为我没有使用客户端。现在javascript发生在前端,但我的问题是你提供的VB代码,它是否替换了我后端的受保护子代码?还是我没有更改的原始后端代码,我只是按照你提供的代码添加了一些内容?上面的VB代码是一种添加。它不会替换受保护的子方法。您要做的是同时添加客户端验证和服务器端验证。同时进行客户端验证和服务器端验证是一种良好的做法。上面的VB代码应该进入页面加载事件或您定义验证程序的位置在呈现页面之前,ASP.Net引擎知道这个特定的验证器还有一个相应的客户端验证器。啊啊,太好了!!现在工作得很好!非常感谢!如果这个答案对您有帮助,您可以将其标记为答案并关闭此线程:
function ValidateSomething(sender, args)
{
    //Your code here   
    //if (condition)
    { //satisfied
        args.IsValid = true;
    } 
    else
    {
        args.IsValid = false;
    }
}