Как мне использовать тип, допускающий значение NULL, если он имеет значение - PullRequest
3 голосов
/ 19 июня 2020

У меня есть модель:

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

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

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

Важно, чтобы Data1 - Data3 были DateTime?

Моя проблема:

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

Я не знаю, как или почему, но ввод такой же, но Date2 и Date3 возвращает неверное значение ...

Спасибо за любую помощь

Ответы [ 2 ]

4 голосов
/ 19 июня 2020

Типы, допускающие значение NULL, можно использовать следующим образом.

model.Date1.HasValue ? model.Date1.Value.ToShortDateString() : "Unknown";
1 голос
/ 19 июня 2020

Вы также можете сравнить со значением default datetime model.Date1.GetValueOrDefault() != default(DateTime).

GetValueOrDefault вернет default значение, если Date1 равно null.

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