Se eu tiver em minha classe de modelo uma propriedade do tipo, DateTimecomo 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 valcontenha 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 DateTimee 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 DisplayFormatatributo e o DataFormatStringparâmetro nas propriedades de ViewModel.