3 votes

Comment utiliser le type nullable s'il a une valeur ?

J'ai mon modèle :

[DataType(DataType.Date)]
public DateTime? Date1 { get; set; }

[DataType(DataType.Date)]
public DateTime? Date2 { get; set; }

[DataType(DataType.Date)]
public DateTime? Date3 { get; set; }

Il est important que Data1 à Data3 soient DateTime?

Mon problème :

//Return right value
(model.Date1.ToString().AsDateTime().ToShortDateString() != "01.01.0001" ? model.Date1.ToString().AsDateTime().ToShortDateString() : "Is not known")
//Return bad value
(model.Date2.ToString().AsDateTime().ToShortDateString() != "01.01.0001" ? model.Date1.ToString().AsDateTime().ToShortDateString() : "Není známo")
//Return bad value
(model.Date3.ToString().AsDateTime().ToShortDateString() != "01.01.0001" ? model.Date3.ToString().AsDateTime().ToShortDateString() : "Is not known")

Je ne sais pas comment ni pourquoi, mais l'entrée est la même, mais Date2 y Date3 renvoie une mauvaise valeur...

Merci pour toute aide

3voto

gurkan Points 854

Vous pouvez utiliser les types nullables comme suit.

model.Date1.HasValue ? model.Date1.Value.ToShortDateString() : "Unknown";

1voto

Karan Points 4121

Vous pouvez également comparer avec default valeur de la date par model.Date1.GetValueOrDefault() != default(DateTime) .

GetValueOrDefault retournera default valeur si Date1 es null .

model.Date1.GetValueOrDefault() != default(DateTime) ? model.Date1.Value.ToShortDateString() : "Unknown";

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X