Jeśli moja klasa modelu ma właściwość typu, DateTime
jak 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ż val
zawiera oczekiwaną wartość, jak mogłem zobaczyć w debugerze).
Dzięki za wskazówki z góry!
Edytować
ToLongDateString
to tylko przykład. Zamiast tego chcę użyć ToLongDateString
niestandardowej metody rozszerzenia DateTime
i 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ć DisplayFormat
atrybutu i DataFormatString
parametru we właściwościach ViewModel.