Jeśli moja klasa modelu ma właściwość typu, DateTimejak mogę ją renderować w określonym formacie - na przykład w formacie, który ToLongDateString()zwraca?
Próbowałem tego ...
@Html.DisplayFor(modelItem => item.MyDateTime.ToLongDateString())
... co zgłasza wyjątek, ponieważ wyrażenie musi wskazywać właściwość lub pole. I to...
@{var val = item.MyDateTime.ToLongDateString();
Html.DisplayFor(modelItem => val);
}
... co nie zgłasza wyjątku, ale renderowane wyjście jest puste (chociaż valzawiera oczekiwaną wartość, jak mogłem zobaczyć w debugerze).
Dzięki za wskazówki z góry!
Edytować
ToLongDateStringto tylko przykład. Zamiast tego chcę użyć ToLongDateStringniestandardowej metody rozszerzenia DateTimei DateTime?:
public static string FormatDateTimeHideMidNight(this DateTime dateTime)
{
if (dateTime.TimeOfDay == TimeSpan.Zero)
return dateTime.ToString("d");
else
return dateTime.ToString("g");
}
public static string FormatDateTimeHideMidNight(this DateTime? dateTime)
{
if (dateTime.HasValue)
return dateTime.Value.FormatDateTimeHideMidNight();
else
return "";
}
Więc myślę, że nie mogę użyć DisplayFormatatrybutu i DataFormatStringparametru we właściwościach ViewModel.