-1

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

4

2 に答える 2