Wenn ich in meiner Modellklasse eine Eigenschaft vom Typ habe, DateTimewie 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 valden erwarteten Wert enthält, wie ich im Debugger sehen konnte).
Vielen Dank für Tipps im Voraus!
Bearbeiten
ToLongDateStringist nur ein Beispiel. Was ich eigentlich anstelle von verwenden möchte, ToLongDateStringist eine benutzerdefinierte Erweiterungsmethode von DateTimeund 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 DisplayFormatAttribut und den DataFormatStringParameter in den ViewModel-Eigenschaften nicht verwenden.