Je l'ai regardé tant d'exemples, et je suis en train de faire comme ils suggèrent tous, mais je continue à obtenir une InvliadCastException
avec la description d'erreur:Parsing Chaîne à DateTime avec TryParseExact en C#
Impossible de jeter l'objet de type 'System.DateTime' taper 'System.String'
Je reçois ma date d'un champ Date du texte de naissance dans une application ASP.NET MVC4, dans le format suivant 20/09/1986
ici est mon code, je veux seulement les utilisateurs a 18 ans pour pouvoir s'inscrire.
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;
}
}
Ma validation personnalisée est alors utilisée comme ceci:
[Required]
[Display(Name = "Date Of Birth")]
[AgeValidator(ErrorMessage="You need to be at least 18 years old to vote.")]
public DateTime DateOfBirth { get; set; }
Comment puis-je obtenir le DateTime analysé correctement?
L'erreur indique que 'value' est déjà un objet' DateTime' – leppie
'value' est déjà un DateTime. –
Je pensais que tout ce qui venait d'un formulaire http était une chaîne? Ou le classeur a-t-il fait un travail intelligent pour moi? :/ – Ciwan