Si tengo en mi clase de modelo una propiedad de tipo, DateTime
¿cómo puedo representarla en un formato específico, por ejemplo, en el formato que ToLongDateString()
devuelve?
He probado esto ...
@Html.DisplayFor(modelItem => item.MyDateTime.ToLongDateString())
... que genera una excepción porque la expresión debe apuntar a una propiedad o campo. Y esto...
@{var val = item.MyDateTime.ToLongDateString();
Html.DisplayFor(modelItem => val);
}
... que no lanza una excepción, pero la salida renderizada está vacía (aunque val
contiene el valor esperado, como pude ver en el depurador).
¡Gracias por los consejos de antemano!
Editar
ToLongDateString
es solo un ejemplo. Lo que realmente quiero usar en lugar de ToLongDateString
es un método de extensión personalizado de DateTime
y 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 "";
}
Entonces, creo que no puedo usar el DisplayFormat
atributo y el DataFormatString
parámetro en las propiedades de ViewModel.