如果我在我的模型类中有一个类型为 DateTime
的属性,我怎样才能以一种特定的格式呈现它——例如以 ToLongDateString()
返回的格式?
我试过了。
@Html.DisplayFor(modelItem => item.MyDateTime.ToLongDateString())
... 引发异常,因为表达式必须指向一个属性或字段。
@{var val = item.MyDateTime.ToLongDateString();
Html.DisplayFor(modelItem => val);
}
... 它不会抛出异常,但是呈现的输出为空(尽管 val
包含预期值,正如我在调试器中看到的那样)。
提前谢谢你的建议!
Edit
ToLongDateString
只是一个例子。我实际上想使用的是 DateTime
和 DateTime?
的自定义扩展方法,而不是 ToLongDateString
:
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 "";
}
因此,我认为我不能在 ViewModel 属性上使用 DisplayFormat
属性和 DataFormatString
参数。