Asp.net CustomValidator不工作

Asp.net CustomValidator不工作,asp.net,vb.net,validation,customvalidator,Asp.net,Vb.net,Validation,Customvalidator,我有一个CustomValidator,它检查文本框中输入的文本是否与数据库中的某些字段匹配。这一切都是伟大的工作之前,但我已经修改了我的页面相当多,从那时起,它不再工作。我不认为我改变了任何会影响这一点的事情,但显然我改变了。我的所有其他验证器(必需的字段验证器)都正常工作,但我的CustomValidator没有响应 总之,这是我的代码: 自定义验证程序: <asp:CustomValidator ID="CustomValidator1" runat="server" Control

我有一个CustomValidator,它检查文本框中输入的文本是否与数据库中的某些字段匹配。这一切都是伟大的工作之前,但我已经修改了我的页面相当多,从那时起,它不再工作。我不认为我改变了任何会影响这一点的事情,但显然我改变了。我的所有其他验证器(必需的字段验证器)都正常工作,但我的CustomValidator没有响应

总之,这是我的代码:

自定义验证程序:

<asp:CustomValidator ID="CustomValidator1" runat="server" ControlToValidate="txtCoursePrefix" ErrorMessage="Course number is already taken."></asp:CustomValidator>
在CustomValidator1.setFocusOneError=True和args.IsValid=False之前,一切都在正常工作。我已经测试了If语句,它工作正常,它返回true,我放在它里面的任何东西都会执行。

使用这个

OnServerValidate=“CustomValidator1\u ServerValidate”

就像一个例子,它会起作用

<asp:CustomValidator ID="CustomValidator1" runat="server" ControlToValidate="txtCoursePrefix" ErrorMessage="Course number is already taken." OnServerValidate="CustomValidator1_ServerValidate"></asp:CustomValidator>


Gaurav Agrawal

首先,将验证组放在验证器上并按下按钮。如果这也不起作用,请将OnClientClick='CheckValidate();'并声明将调用page_clientvalidate方法以及参数的函数。。验证组。这肯定会奏效。如果这不起作用,请将调试器放在javascript方法中,并在调用处理程序时进行相同的调试,并且成功地将args.IsValid设置为false,那么它将Page.IsValid设置为false。但不幸的是,这并不能阻止表单被sumbit。您需要做的是在处理表单提交的代码中检查Page.IsValid属性,就像在提交按钮处理程序中一样

因此,除了您发布的代码(听起来它工作正常)之外,请确保您的提交处理程序具有类似的内容(C#示例):


使用CustomValidator时应了解的事项:

如果您正在使用
ValidationGroup
进行验证,请不要忘记将其添加到
CustomValidator

控件设置为验证
属性

ControlToValidate
控件为空时,
CustomValidator
控件从不激发,除非您将
ValidateEmptyText=true

使用
ClientValidationFunction=“customClientValidationFunction”
时,请使用以下签名:

function customClientValidationFunction(sender, arguments) {
   arguments.IsValid = true; //validation goes here
}

您应该在
CustomValidator
上设置属性
ValidateEmptyText=“true”
。在这种情况下,将始终调用客户端和服务器函数


它为我解决了问题。

您的代码似乎还可以,问题一定在其他地方。是的,我就是这么想的。。。不知道会有什么干扰。您在表单上设置了验证组吗?如果是这样,您需要将
validationgroup
属性添加到
标记中。不,我没有验证组。。。没有一个也行,对吧?没用。。。因为它已经被调用了,因为我的代码中有“Handles CustomValidator1.ServerValidate”。很好,我对这个简单的东西很困惑,我在谷歌上搜索并找到了你的答案
protected void btnSubmit_Click(object sender, EventArgs e)
{
    if (!Page.IsValid)
    {
        // by simply returning, the error message for the CustomValidator will be displayed
        return;
    }
    // do processing for valid form here
}
function customClientValidationFunction(sender, arguments) {
   arguments.IsValid = true; //validation goes here
}