MVC Razor 视图 - 显示修改日期而不是创建日期(如果它不为空)



在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; }
    }

相关内容

最新更新