2012-03-25 83 views
0

我有一个CustomValidator被用来检查用户名的可用性,但它没有被调用(我也用断点检查它)。CustomValidator不被称为

<asp:CustomValidator ID="usernameC" runat="server" ErrorMessage="Username is already taken" ControlToValidate="txtUsername" Display="None" OnServerValidate="usernameC_ServerValidate" /> 

代码隐藏

protected void usernameC_ServerValidate(object source, ServerValidateEventArgs args) 
{ 
    if (new UsersBL().SearchUserByUsername(args.Value) == null) 
     args.IsValid = true; 
    else 
     args.IsValid = false; 
} 

可能是什么问题?

+0

你为什么设置Display =“None”。请将其设置为静态。 – PraveenVenu 2012-03-25 10:21:33

+0

@PraVn我正在使用ValidationSummary控件 – chris05 2012-03-25 10:41:34

+0

您可以使用'CustomValidator'的'ClientValidationFunction'属性,然后编写一个javascript函数在客户端验证它。 – PraveenVenu 2012-03-25 10:48:42

回答

1

当页面被发布到服务器时,它将被调用。例如你有一个asp:按钮,当用户点击它时,页面被发送到服务器,并在它调用button_click事件之前调用服务器验证功能。

+0

我明白了问题所在,但可以像其他验证器一样调用(autopostback)。这可能是不可能的,因为它是服务器端而不是客户端。 – chris05 2012-03-25 10:42:52

+0

你到底想做什么?你可以使用JavaScript做回发,然后得到验证功能被称为 – 2012-03-25 10:54:20

+0

是的,这将是我的理想选择。 – chris05 2012-03-25 10:58:13