How to render a DateTime in a specific format in ASP.NET MVC 3?
Posted
by
Slauma
on Stack Overflow
See other posts from Stack Overflow
or by Slauma
Published on 2011-05-14T11:56:01Z
Indexed on
2013/10/28
9:54 UTC
Read the original article
Hit count: 372
If I have in my model class a property of type DateTime
how can I render it in a specific format - for example in the format which ToLongDateString()
returns?
I have tried this...
@Html.DisplayFor(modelItem => item.MyDateTime.ToLongDateString())
...which throws an exception because the expression must point to a property or field. And this...
@{var val = item.MyDateTime.ToLongDateString();
Html.DisplayFor(modelItem => val);
}
...which doesn't throw an exception, but the rendered output is empty (although val
contains the expected value, as I could see in the debugger).
Thanks for tips in advance!
Edit
ToLongDateString
is only an example. What I actually want to use instead of ToLongDateString
is a custom extension method of DateTime
and 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 "";
}
So, I think I cannot use the DisplayFormat
attribute and DataFormatString
parameter on the ViewModel properties.
© Stack Overflow or respective owner