Andrew Black
Andrew Black

Reputation: 129

How should I use the nullable type if it has a value

I have my Model:

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

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

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

It's important for Data1 to Data3 to be DateTime?

My problem:

//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")

I dont know how or why but input is same but Date2 and Date3 returns bad value...

Thanks for any help

Upvotes: 3

Views: 194

Answers (2)

gurkan
gurkan

Reputation: 1480

You can use the nullable types as follows.

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

Upvotes: 3

Karan
Karan

Reputation: 12619

You can also compare with default datetime value by model.Date1.GetValueOrDefault() != default(DateTime).

GetValueOrDefault will return default value if Date1 is null.

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

Upvotes: 1

Related Questions