在MVC核心视图中,如果它不为空,我正在尝试显示修改日期而不是创建日期。
所以,我像下面这样写
@Html.DisplayFor(modelItem => (item.DateModified.HasValue ? item.DateModified : item.DateCreated))
但是得到一个错误说
Templates can be used only with field access, property access, single-dimension array index, or single-parameter custom indexer expressions
因此,取而代之的是,我将其更改为以下内容,并且可以正常工作。
@(item.DateModified.HasValue ? item.DateModified.Value.ToString("dd/MM/yyyy") : item.DateCreated.ToString("dd/MM/yyyy"))
但是,问题是我必须重新指定日期的格式,我已经在模型声明中这样做了。 如果没有,它将以 dd/MM/yyyy HH:mm:ss 格式显示数据,因为我不再使用 DisplayFor 了。
另一种可能性是,我可以使用 ViewModel 并添加一个新属性来处理这种特殊文本。
我可以知道是否有更好的方法来处理这种情况吗?
您可以在视图模型中使用以下帮助程序属性,该属性将处理您的问题和格式
//Considering your DateCreated is not nullable
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}")]
public DateTime DisplayDate
{
get { return DateModified.HasValue ? DateModified.Value : DateCreated; }
}