【问题标题】:Custom Validator does not fire自定义验证器不会触发
【发布时间】:2011-05-01 00:45:21
【问题描述】:

我有以下代码。当我按下保存按钮时,三个 requiredfieldvalidators 运行良好且工作正常。但是我的自定义验证器不起作用。它根本不会触发事件。我有标准文本框和验证摘要控件。是否有任何原因导致它无法正常工作?

<asp:RequiredFieldValidator runat="server" ControlToValidate="txtForename" Display="None" ErrorMessage="Must enter a valid first name." />
<asp:RequiredFieldValidator runat="server" ControlToValidate="txtSurname" Display="None" ErrorMessage="Must enter a valid last name." />
<asp:RequiredFieldValidator runat="server" ControlToValidate="txtEmail" Display="None" ErrorMessage="Must enter a valid e-mail address." />

<asp:CustomValidator runat="server" OnServerValidate="CheckAtLeastOnePhoneNumber" 
        ErrorMessage="Must enter at least one phone number." Display="None" 
        ValidateEmptyText="True" />

<script runat="server">
    void CheckAtLeastOnePhoneNumber(Object s, ServerValidateEventArgs e)
    {
        if (txtMobileNumber.Text.Equals("") &&
            txtWorkNumber.Text.Equals("") &&
            txtHomeNumber.Text.Equals(""))
        {
            e.IsValid = false;
        }
    }
</script>

【问题讨论】:

    标签: asp.net customvalidator


    【解决方案1】:

    我修好了。

    自定义验证器控件是服务器端检查,因此其他验证器(客户端)首先执行。这有点误导,因为 validationsummary 控件通常会显示所有验证器错误。

    假设姓名、电子邮件等都是有效的,只有这样它才会提交到服务器并提出验证错误。

    【讨论】:

    • 您也可以使用自定义验证器在客户端进行此检查,以便它适合您的客户端检查。
    【解决方案2】:

    没错。这就是它的工作方式。如果您希望自定义验证器也可以在浏览器中工作,则需要在 JavaScript 中实现自定义验证并在控件的 ClientValidationFunction 属性中定义该方法。然后它将在验证摘要中显示客户端错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-10
      • 2015-08-21
      相关资源
      最近更新 更多