【问题标题】:How to get custom validator event to fire in asp.net?如何让自定义验证器事件在 asp.net 中触发?
【发布时间】:2014-06-21 10:13:07
【问题描述】:

我在 asp.net 中使用自定义验证器工具来检查文本框是否为空白(我没有使用 requiredfieldvalidator,因为有问题的文本框将偶尔启用)。问题是自定义验证器代码后面的事件根本没有触发。这是源代码:

<asp:TextBox ID="txtS_rentSDate" runat="server" Font-Names="Bookman Old Style" 
                Font-Size="Medium" Width="326px" 
                ontextchanged="txtS_rentSDate_TextChanged" 
                CausesValidation="True"></asp:TextBox>    

<asp:CustomValidator ID="cvRentSDate" runat="server" 
                ControlToValidate="txtS_rentSDate" 
                ErrorMessage="Please enter the rent start date" 
                onservervalidate="cvRentSDate_ServerValidate" ValidateEmptyText="True" 
                Width="180px"></asp:CustomValidator>

后面的代码:

protected void cvRentSDate_ServerValidate(object source, ServerValidateEventArgs args)
{
    args.IsValid = (args.Value.Length > 0);
}

请让我知道我哪里出错了,正确的方法是什么?

【问题讨论】:

  • 页面是否已回传?即其他事件会触发吗?
  • 是的,其他事件确实会触发。
  • 您的表单除了上述之外还有其他控件吗?您可能使用了必需的验证器或其他在客户端工作的验证器。如果是这种情况,那么您的事件只会在回发发生时触发。
  • @dotnetstep 还有其他必填字段验证器,但是在单击保存按钮时确实会发生回发,但不会触发事件。

标签: c# asp.net customvalidator


【解决方案1】:
<asp:CustomValidator ID="cvRentSDate" runat="server" 
            ControlToValidate="txtS_rentSDate" 
            ErrorMessage="Please enter the rent start date" 
            OnServerValidate="cvRentSDate_ServerValidate" ValidateEmptyText="True" 
            Width="180px"></asp:CustomValidator>

试试我上面的几行。可能您需要使用 OnServerValidate 而不是 onservervalidate。

【讨论】:

  • 它应该可以工作。你有什么错误吗? txtS_rentSDate_TextChanged 事件中有什么?
  • txtS_rentSDate_TextChanged 为空白,它不包含任何内容。@gkrishy
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-04
  • 2011-08-06
  • 2011-07-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多