参考这篇文章中的答案,我添加了 /Views/Shared/DisplayTemplates 并添加了一个名为 ShortDateTime.cshtml 的局部视图,如下所示:
@model System.DateTime
@Model.ToShortDateString()
当模型包含一个值时,它会起作用并且格式化的日期会正确显示:
@Html.DisplayFor(modelItem => item.BirthDate, "ShortDateTime")
但是,如果返回空值,则会引发“System.InvalidOperationException”。表示:
{“传入字典的模型项为空,但该字典需要一个非空的‘System.DateTime’类型的模型项。”}
我的第一个倾向是在局部视图中使用 if 语句,但这似乎并不重要。在不引用模板的情况下,空值的处理方式如下:
@Html.DisplayFor(modelItem => item.BirthDate)
但格式化的原始问题仍然存在。当我尝试按如下方式在视图中放置条件格式时,它不起作用,但我希望它只是一个语法问题。
@Html.DisplayFor(modelItem => item.BirthDate == null) ? string.Empty : (modelItem => item.BirthDate, "ShortDateTime"))
以上导致不同的“System.InvalidOperationException”:
{"模板只能与字段访问、属性访问、一维数组索引或单参数自定义索引器表达式一起使用。"}
那么,有没有办法在 View 中进行条件格式化以仅从 DateTime 值生成日期?