我有一个简单的验证器,应该检查日期格式是否不正确。我正在测试并输入2/14/201 ...它将通过我的验证器传递为2/14/0201。如何防止这种情况并跳转到e.IsValid = false;?
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;
}
答案 0 :(得分:3)
dateCheck应该是字符串而不是DateTime吗?
如果只有日期> 1900年有效,你可以试试:
if (DateTime.TryParse(dateCheck, out select) && dateCheck > default(DateTime))
e.IsValid = true;
else
e.IsValid = false;
这可能符合您的要求。
答案 1 :(得分:0)
您可以检查字符串的字符串长度,然后再将其转换为日期时间,您可以在/上拆分字符串并解析年份以确保它在您的范围内有效,您可以添加一个辅助条件,检查TryParse之前的那一年。
答案 2 :(得分:0)
未登记的年份如何有效?
DateTime值类型表示 具有值范围的日期和时间 从1月1日午夜12点开始, 0001 Anno Domini(Common Era)通过 公元9999年12月31日晚上11:59:59 (C.E。)
你应该尝试这样的事情:
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...
}