CustomValidator OnServerValidate不起作用

时间:2012-10-17 16:50:26

标签: c# textbox code-behind customvalidator

我正在尝试使用关键字“OnServerValidate”

来使用CustomValidator

以下是我在.aspx文件中设置的地方:

<div class="label">
    <div><label for="parentemail1">Email Address</label></div>
    <div><asp:TextBox ID="parentemail1" runat="server" MaxLength="40" Columns="40"></asp:TextBox></div>                      
        <asp:CustomValidator id="ParentEmail1Required"
        ControlToValidate="parentemail1"
        Display="Dynamic"
        ErrorMessage="Required"
        ValidateEmptyText="true"
        OnServerValidate="ServerValidator"
        runat="server"/>                          
</div>

这里是OnServerValidate的C#代码隐藏方法:

protected void ServerValidator(object source, ServerValidateEventArgs args)
{
    args.IsValid = false;
}

我是否遗漏了某些内容,提交表单时是否应该触发CustomValidator? 我已经阅读了很多帖子,甚至尝试使用相同控件上的RequiredFieldValidator,但没有运气。我有这个使用ClientValidationFunction,但我想访问代码后面的属性而不是DOM。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:4)

试试这个

protected void ServerValidator(object source, ServerValidateEventArgs args)
{
    if(args.IsValid == false)
       return;
    Response.Redirect("NextPage.aspx");// It will not fire if page is not valid.
}

答案 1 :(得分:0)

好吧,参数args没有发送到服务器,这就是你没有得到服务器消息的原因。添加按钮就可以做到这一点。

将代码更改为

<div>
        <div class="label">
    <div><label for="parentemail1">Email Address</label></div>
    <div><asp:TextBox ID="parentemail1" runat="server" MaxLength="40" Columns="40"></asp:TextBox>
        <br />
        <asp:Button ID="btnSendData" runat="server" Text="Send Data" />
            </div>                      
        <asp:CustomValidator id="ParentEmail1Required"
        ControlToValidate="parentemail1"
        Display="Dynamic"
        ErrorMessage="Required"
        ValidateEmptyText="true"
        OnServerValidate="ServerValidator"
        runat="server" SetFocusOnError="True"/>                          
</div>
    </div>