Se eu tiver em minha classe de modelo uma propriedade do tipo, DateTime
como posso renderizá-la em um formato específico - por exemplo, no formato que ToLongDateString()
retorna?
Eu tentei isso ...
@Html.DisplayFor(modelItem => item.MyDateTime.ToLongDateString())
... que lança uma exceção porque a expressão deve apontar para uma propriedade ou campo. E isto...
@{var val = item.MyDateTime.ToLongDateString();
Html.DisplayFor(modelItem => val);
}
... que não lança uma exceção, mas a saída renderizada está vazia (embora val
contenha o valor esperado, como pude ver no depurador).
Obrigado por dicas com antecedência!
Editar
ToLongDateString
é apenas um exemplo. O que eu realmente quero usar em vez de ToLongDateString
é um método de extensão personalizado de DateTime
e 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 "";
}
Portanto, acho que não posso usar o DisplayFormat
atributo e o DataFormatString
parâmetro nas propriedades de ViewModel.