Wenn ich in meiner Modellklasse eine Eigenschaft vom Typ habe, DateTime
wie kann ich sie in einem bestimmten Format rendern - zum Beispiel in dem Format, das ToLongDateString()
zurückgibt?
Ich habe es versucht ...
@Html.DisplayFor(modelItem => item.MyDateTime.ToLongDateString())
... was eine Ausnahme auslöst, da der Ausdruck auf eine Eigenschaft oder ein Feld verweisen muss. Und das...
@{var val = item.MyDateTime.ToLongDateString();
Html.DisplayFor(modelItem => val);
}
... was keine Ausnahme auslöst, aber die gerenderte Ausgabe ist leer (obwohl sie val
den erwarteten Wert enthält, wie ich im Debugger sehen konnte).
Vielen Dank für Tipps im Voraus!
Bearbeiten
ToLongDateString
ist nur ein Beispiel. Was ich eigentlich anstelle von verwenden möchte, ToLongDateString
ist eine benutzerdefinierte Erweiterungsmethode von DateTime
und 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 "";
}
Daher kann ich das DisplayFormat
Attribut und den DataFormatString
Parameter in den ViewModel-Eigenschaften nicht verwenden.