使用验证来检查从今天开始的人的年龄

时间:2013-10-16 20:28:23

标签: c# asp.net

我正在尝试创建一个来检查一个人是否在今天的日期和时间之间的18到25之间。我知道我可以使用具有日期类型的范围验证器,然后手动输入日期,但如果有人在将来使用该表单,我输入的日期将是不正确的。是否有一段代码可以用来确保我不必每年都要继续更新验证器?

    protected void btnSubmit_Click(object sender, EventArgs e)
    {
        rngValDateOfBirth.MinimumValue = DateTime.Now.AddYears(-25).ToString();
        rngValDateOfBirth.MaximumValue = DateTime.Now.AddYears(-18).ToString();
    }

 Date Of Birth <asp:TextBox ID="txtCdob" runat="server"></asp:TextBox>
        <asp:RequiredFieldValidator ID="rfvCdob" runat="server" ErrorMessage="You must enter a date of  birth" Text="*" ControlToValidate="txtCDOB" Display="Dynamic">*</asp:RequiredFieldValidator>
        <asp:RangeValidator ID="rngValDateOfBirth" runat="server" ErrorMessage="must be between 18 and 25" ControlToValidate="txtCdob" Type="Date"></asp:RangeValidator>

3 个答案:

答案 0 :(得分:4)

您可以在代码隐藏中设置Minimum/Maximum属性。

未经测试,但这样的事情可能有效:

MyDateRangeValidator.MinimumValue = DateTime.Now.AddYears(-25).ToString(/* format */);
MyDateRangeValidator.MaximumValue = DateTime.Now.AddYears(-18).ToString(/* format */);

答案 1 :(得分:0)

使用DateTime.Now获取当前日期&amp;时间(或DateTime.UtcNow以避免时区问题)。有了这个,你可以从他们的DOB动态计算某人的年龄,所以不需要定期更新任何代码。

http://msdn.microsoft.com/en-us/library/system.datetime.aspx

答案 2 :(得分:0)

int age = DateTime.Now.Year - userBirthYear;
if(age > 18 && age < 25)
{

}

DateTime.Now将在调用时获得正确的时间