我有以下代码。当我按下保存按钮,三个requiredfieldvalidators运行良好和正常工作。但是我自定义的验证不起作用。它不会在所有的触发事件。我有标准的文本框和一个ValidationSummary控件。是否有任何理由为什么它可能无法正常工作?

<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>
有帮助吗?

解决方案

我固定它。

在自定义验证控制是一个服务器端检查,因此其他验证器(其是客户端)执行第一。这是有点误导,因为ValidationSummary控件通常显示所有验证错误。

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

其他提示

这是正确的。这是它的工作方式。如果你想有一个自定义的验证程序也是在浏览器中运行,你需要实现在JavaScript中自定义的验证并确定该控件的属性ClientValidationFunction的方法。然后,它会显示与验证摘要客户端错误。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top