【问题标题】:CustomValidator OnServerValidate Not WorkingCustomValidator OnServerValidate 不工作
【发布时间】:2012-10-17 16:50:26
【问题描述】:

我正在尝试使用关键字“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。

任何帮助将不胜感激。

【问题讨论】:

  • 你的意思是ServerValidator方法在你回发页面时没有命中?
  • 实际上,我只是注意到它正在触发,但它并没有阻止页面重定向到下一页。我刚刚注意到后面的表单提交按钮代码在底部有这个: Response.Redirect("NextPage.aspx");无论如何我可以阻止它根据验证器进行重定向吗?
  • 我刚刚将您的代码复制并粘贴到一个 Web 应用程序中,它到达了我在 ServerValidator 中创建的断点。听起来您的示例代码中未显示其他内容。
  • 我认为你是绝对正确的安倍。我现在相信上面的代码是可靠的,但是 Response.Redirect("NextPage.aspx");在表单提交按钮代码后面是覆盖 CustomValidator 的内容。它会进行验证,但在我看到它之前,它会将其推送到下一页。当我注释掉重定向时,我可以看到 CustomValidator 错误消息。

标签: c# textbox code-behind customvalidator


【解决方案1】:

试试这个

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

【讨论】:

  • 我不确定我是否喜欢这个解决方案。验证方法不应该只验证代码吗?它不应该处理重定向。这应该由整个表单的提交按钮处理。这是让单个字段的验证器重定向页面。
【解决方案2】:

嗯,参数 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>

【讨论】:

    猜你喜欢
    • 2010-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多