asp.net:CustomValidator - 不首先发射

时间:2014-06-10 14:30:18

标签: asp.net vb.net textbox customvalidator

我的自定义验证器正在工作,唯一的问题是它在其他任何事情之前没有触发,它同时发生。是的,我在收到参数时收到错误消息,但我也得到了我的应用程序的其余部分。在满足所述参数之前,我甚至不想发生任何事情。

这就是我的意思:

<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>

我的代码背后:

Protected Sub valMatchLocation_ServerValidate(source As Object, args As ServerValidateEventArgs)
        Dim current_user = CurrentUser.AuthenticatedData.Get_CurrentUser

        If (args.Value = current_user.Id) Then
            args.IsValid = True

        Else
            args.IsValid = False

        End If
    End Sub

在测试时,这确实是我想要的一部分;但是,此验证不会在应用程序的其余部分之前发生。例如:用户想要搜索与该用户特定Id不相关的一些文档,因此如果用户输入不属于他们的Id,则他们必须满足其他参数才能实际进行搜索。

请帮忙。我变得非常沮丧。虽然,我确信它有点愚蠢但我不知道:{

1 个答案:

答案 0 :(得分:0)

您是否使用过自定义验证器的客户端验证?

您可以使用以下内容:

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;
    }
}

这可以解决您的问题,因为验证发生在回发到服务器之前。

希望这有帮助!!!