我正在尝试创建一个来检查一个人是否在今天的日期和时间之间的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>
答案 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将在调用时获得正确的时间