2013-10-16 27 views
0

我試圖創建一個來檢查一個人是否在今天的日期和時間之間是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

您可以在代碼隱藏中設置Minimum/Maximum屬性。

未經檢驗的,但這樣的事情可能工作:

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

爲什麼'ToString's?將DateTime與DateTime進行比較會更容易。 –

+0

@TimS。,這些屬性是字符串值。該控件可以處理轉換爲DateTimes。請參閱備註部分。 http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.rangevalidator.minimumvalue.aspx – Brandon

+0

哦,gotcha,我沒有意識到這是一個現有的具有'string'屬性的類。 –

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

} 

DateTime.Now會得到正確的時間,當它被稱爲