2012-02-01 43 views
1

使用asp验证器,是否有一种方法来验证输入的出生日期是否在年龄范围内,比如5岁和22岁?我现在做一个asp:compareValidator和一个asp:rangeValidator,但我需要添加另一个级别的当前日期的范围验证与在文本框中输入的值,以通知年龄超出允许的范围(5和22岁只)asp验证器 - 确定年龄是否在范围内

感谢 托尼

+0

你能粘贴,你有那些2个验证标记?我不确定是否需要为同一个文本框添加一组验证器,或者您想查看当前验证器有什么问题。 – 2012-02-01 16:19:29

+0

我目前的验证器确实没有什么问题....我只需要检查当前的年龄,以确保它在正确的年龄范围内。 – pithhelmet 2012-02-01 16:23:25

+0

那么,在服务器上,很容易计算相对于当前日期的第5个和第22个生日。因此,将MinimumValue和MaximumValue设置为这两个日期。 – 2012-02-01 16:44:21

回答

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> 
+0

任何方式来实现这个没有回传? – pithhelmet 2012-02-01 16:24:26

+1

javascript:'

';然后脚本:'function validateForm(){/ *从txtbox获取日期,在这里验证它,返回true/false * /}' – 2012-02-01 16:30:16

+0

对不起 - 使用asp验证器 – pithhelmet 2012-02-01 16:50:01