题
我有以下代码。当我按下保存按钮,三个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的方法。然后,它会显示与验证摘要客户端错误。
不隶属于 StackOverflow