1

我正在尝试创建一个以检查一个人在今天的日期和时间是否在 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>
4

3 回答 3

4

您可以在代码隐藏中设置最小/最大属性。

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

MyDateRangeValidator.MinimumValue = DateTime.Now.AddYears(-25).ToString(/* format */);
MyDateRangeValidator.MaximumValue = DateTime.Now.AddYears(-18).ToString(/* format */);
于 2013-10-16T20:32:44.367 回答
0

用于DateTime.Now获取当前日期和时间(或DateTime.UtcNow避免时区问题)。有了这个,您可以从他们的出生日期动态计算某人的年龄,因此无需定期更新任何代码。

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

于 2013-10-16T20:32:54.493 回答
0
int age = DateTime.Now.Year - userBirthYear;
if(age > 18 && age < 25)
{

}

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

于 2013-10-16T20:34:12.293 回答