私は非常に多くの例を見てきました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 を正しく解析するにはどうすればよいですか?