【发布时间】:2013-05-29 17:53:11
【问题描述】:
我查看了很多示例,并且按照他们的建议进行操作,但我不断收到 InvliadCastException 错误描述:
无法将“System.DateTime”类型的对象转换为“System.String”类型
我从 ASP.NET MVC4 应用程序中的出生日期文本字段中获取我的日期,格式如下 20/09/1986
这是我的代码,我只希望 18 岁以上的用户能够注册。
public class AgeValidator : ValidationAttribute
{
public override bool IsValid(object value)
{
string format = "dd/MM/yyyy HH:mm:ss";
DateTime dt;
DateTime.TryParseExact((String)value, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out dt);
DateTime today = DateTime.Today;
int age = today.Year - dt.Year;
if (dt > today.AddYears(-age)) age--;
if (age < 18)
{
return false;
}
return true;
}
}
然后像这样使用我的自定义验证:
[Required]
[Display(Name = "Date Of Birth")]
[AgeValidator(ErrorMessage="You need to be at least 18 years old to vote.")]
public DateTime DateOfBirth { get; set; }
如何正确解析 DateTime?
【问题讨论】:
-
错误提示
value已经是DateTime对象 -
value已经是一个日期时间。 -
我以为通过 http post 表单发送的所有内容都是字符串?或者粘合剂为我做了一些聪明的工作? ://
-
你是对的!您能否将其写为答案,以便我将问题标记为已回答。