我有一个相当大的 ASPX 表单,其中有很多文本框和下拉列表要填写。大多数文本框都有RequiredFieldValidator 控件,这些都可以正常工作。
但是,我有 3 个用于家庭、移动和工作电话号码的文本框。每个文本框都是可选的,但如果填写,则值必须是数字。此时我不需要验证电话号码的格式,只需确保它是数字即可。
其中一个字段的客户端代码如下所示:
<asp:Label ID="lblWorkPhone" runat="server" AssociatedControlID="txtWorkPhone" Text="<%$ Resources: Registration, WorkPhone %>" /><br />
<asp:TextBox ID="txtWorkPhone" runat="server" />
<asp:CustomValidator ID="validateWorkPhone" runat="server"
ValidationGroup="reg" ControlToValidate="txtWorkPhone" ForeColor="Red"
ErrorMessage="<%$ Resources: Registration, HomePhoneNumber %>"
Text="<%$ Resources: Registration, RequireMessage %>"
onservervalidate="validateWorkPhone_ServerValidate" />
服务器端验证方法在这里:
protected void validateWorkPhone_ServerValidate(object source, ServerValidateEventArgs args)
{
long temp = 0;
long.TryParse(txtWorkPhone.Text, out temp);
if (temp == 0)
{
args.IsValid = false;
validateWorkPhone.IsValid = true;
}
else
{
args.IsValid = true;
validateWorkPhone.IsValid = false;
}
}
据我所知,服务器端验证方法根本没有触发。页面上的所有其他验证控件似乎都可以正常工作。
有人可以帮忙吗?