asp验证器 - 确定年龄是否在范围内

时间:2012-02-01 16:09:09

标签: asp.net validation

使用asp验证器,有没有办法验证输入的出生日期是否在5岁和22岁之间?

我目前使用asp:compareValidator和asp:rangeValidator,但是我需要针对文本框中输入的值添加当前日期的另一级别范围验证,以通知年龄超出允许范围(5和22)只有几岁)

感谢 贝

1 个答案:

答案 0 :(得分:2)

您可以使用ASP.NET CustomValidator。在ASP.NET代码中,添加以下控件:

<asp:CustomValidator runat="server" id="ageByDateCheck"
    ControlToValidate="txtDate"
    OnServerValidate="CheckAgeByDate"
    ErrorMessage="You are not between the ages of 5 and 22." />

在您的代码隐藏中,您将有一种检查年龄的新方法。

public void CheckAgeByDate(object source, ServerValidateEventArgs args)
{
    var date = DateTime.Parse(args.Value);
    args.IsValid = true; //Replace this with your age check algorithm.
}

修改 如果您正在寻找客户端验证,则必须创建一些javascript来进行验证,并在控件的ClientValidation字段中指定它。所以你的ASP.NET控件现在看起来像这样:

<asp:CustomValidator runat="server" id="ageByDateCheck"
    ControlToValidate="txtDate"
    OnServerValidate="CheckAgeByDate"
    ClientValidation="ClientValidate"
    ErrorMessage="You are not between the ages of 5 and 22." />

你可能不需要有一个不同的名字,但我倾向于将事情分开以保持代码的健全。

对于您的javascript:

<script language="javascript"> 
function ClientValidate(source, arguments)
{
    var date = new Date(arguments.Value); //make sure it's something javascript can parse
    //validate age here
    arguments.IsValid = isValid(date);
}
</script>