【发布时间】:2016-07-02 10:58:42
【问题描述】:
我尝试过这种方式,但出现错误。这是我的代码。
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
DateTime _dateJoin = DateTime.ParseExact(value.ToString(), "MM/dd/yyyy", null);
DateTime _CurDate = DateTime.ParseExact(DateTime.Now.ToString(), "MM/dd/yyyy", null);
int cmp = _dateJoin.CompareTo(_CurDate);
if (cmp > 0)
{
return ValidationResult.Success;
}
else if (cmp < 0)
{
return new ValidationResult(ErrorMessage);
}
else
{
return ValidationResult.Success;
}
}
值变量也有有效的日期和时间部分。谢谢
【问题讨论】:
-
你在那里做什么?为什么要将日期时间从
DateTime.Now转换为字符串,然后再转换回DateTime?只需使用DateTime.Today。 -
DateTime _CurDate = DateTime.Today会比解析Now来剥离时间更简单。您也可以使用value.Date仅返回日期部分。 -
这一行给出错误
DateTime _dateJoin = DateTime.ParseExact(value.ToString(), "MM/dd/yyyy", null); -
它是一个 json(字符串)值还是实际上是 DateTime?后者可以直接转换为 DateTime。
DateTime _dateJoin = (DateTime)value;更好的是删除参数类型object并使其成为DateTime?并在执行大于测试之前检查它是否为空。