Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc MVC Razor视图-如果不为空,则显示修改的日期而不是创建的日期_Asp.net Mvc_Razor_Asp.net Core Mvc - Fatal编程技术网

Asp.net mvc MVC Razor视图-如果不为空,则显示修改的日期而不是创建的日期

Asp.net mvc MVC Razor视图-如果不为空,则显示修改的日期而不是创建的日期,asp.net-mvc,razor,asp.net-core-mvc,Asp.net Mvc,Razor,Asp.net Core Mvc,在MVC核心视图中,我试图显示修改的日期,而不是创建的日期,如果它不是空的 所以,我写了如下 @Html.DisplayFor(modelItem => (item.DateModified.HasValue ? item.DateModified : item.DateCreated)) 但是我说的是个错误 Templates can be used only with field access, property access, single-dimension array inde

在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并添加一个新属性来处理这种特殊文本


我可以知道是否有更好的方法来处理这种情况吗?

您可以在视图模型中使用以下helper属性,它将处理您的问题和格式设置

    //Considering your DateCreated is not nullable

    [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}")] 
    public DateTime DisplayDate
    {
       get { return DateModified.HasValue ? DateModified.Value : DateCreated; }
    }

您建议的视图模型可能性是处理此问题的最佳方法。视图模型总是最好的,但您可以始终使用@if item.DateModified.HasValue{@Html.DisplayForm=>item.DateModified}else{@Html.DisplayForm=>item.DateCreated}在模型中使用helper属性似乎比在视图中放置逻辑更好。我是否遗漏了什么?除非我放入[DisplayFormatDataFormatString={0:dd/MM/yyyy}],否则它不会以正确的格式显示。是的,您还必须修饰DisplayFormat属性