2010-02-02 48 views
2

我有一個簡單的驗證器,應該檢查日期格式是否不正確。我正在進行測試並輸入2/14/201 ...通過我的驗證器作爲2/14/0201。我如何防止並跳轉到e.IsValid = false;?如何從填充停止DateTime驗證程序?

protected void rangeVal(object sender, ServerValidateEventArgs e) 
{ 
    DateTime dateCheck = txtDate1.Text.Trim(); 
    DateTime select; 
    if (DateTime.TryParse(dateCheck, out select)) 
     e.IsValid = true; 
    else 
     e.IsValid = false; 
} 

回答

3

如果dateCheck是字符串而不是DateTime?

如果只有日期> 1900年是有效的,你可以嘗試:

if (DateTime.TryParse(dateCheck, out select) && dateCheck > default(DateTime)) 
    e.IsValid = true; 
else 
    e.IsValid = false; 

,並可能滿足您的需求。

0

你可以檢查字符串把它變成一個日期時間之前進來的字符串長度,你可以在分割字符串/和解析一年,以確保它是你的範圍內有效的,你可以添加在TryParse之前檢查一年的第二個條件。

0

未鋪墊的一年如何減少有效性?

MSDN DateTime structure

的日期時間值類型通過 11:59表示 的日期和時間值的範圍從午夜12:00:00,1月1日,0001 公元(共同的時代) :59 PM,12月31日,公元9999 (CE)

你應該嘗試這樣的事:

protected void rangeVal(object sender, ServerValidateEventArgs e) 
{ 
    DateTime dateCheck = txtDate1.Text.Trim(); 
    DateTime select; 
    if (DateTime.TryParse(dateCheck, out select)) 
    { 
     e.IsValid = IsDateTimeValidForMyApplication(select); 
    } 
    else 
     e.IsValid = false; 
} 

bool IsDateTimeValidForMyApplication(DateTime dt) 
{ 
    return dt.Year > 2000; //or whatever business rules your app has... 
}