15

我正在使用 Razor Views 开发一个 ASP.Net MVC 3 Web 应用程序。我有以下 ViewModel 传递给我的 Razor 视图并迭代以显示记录列表。

视图模型

public class ViewModelLocumEmpList
{
    public IList<FormEmployment> LocumEmploymentList {get; set;}
}

看法

<table>
  <tr>
   <th>Employer</th>
   <th>Date</th>
   </tr>
    @foreach (var item in Model.LocumEmploymentList) {
      <tr>
        <td>@item.employerName</td>
        <td>@item.startDate</td>
      </tr>
      }
      </table>

我的问题是这条线

@Html.DisplayFor(modelItem => item.startDate)

返回这样的日期20/06/2012 00:00:00,我希望它删除时间并仅显示日期,即20/06/2012

我试过添加

@Html.DisplayFor(modelItem => item.startDate.Value.ToShortDateString())

DisplayFor(modelItem => item.startDate.HasValue ? item.startDate.Value.ToShortDateString(): "")

但是,它们都在运行时返回以下错误消息

Templates can be used only with field access, property access, single-dimension array index, or single-parameter custom indexer expressions.

我在这里查看了 Darin Dimitrov 的回答Converting DateTime format using razor

但是,我无权访问 ViewModel 中的 startDate 属性,我的 ViewModel 返回您可以在上面看到的 FormEmployment 对象的 IList。

如果有人对如何从日期时间属性中删除时间有任何想法,那么我将不胜感激。

谢谢。

另外,我的 startDate 属性是 Nullable。

更新

根据 PinnyM 的回答,我添加了一个部分类(见下文)以将 [DisplayFormat] 属性放在 startDate 属性上。

public partial class FormEmployment
{
    [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}")]
    public Nullable<System.DateTime> startDate { get; set; }
}

但是,我的 Razor View 仍然使用以下代码显示20/06/2012 00:00:00

@Html.DisplayFor(modelItem => item.startDate)

有任何想法吗?

谢谢。

4

3 回答 3

35

您可以使用 @item.startDate.Value.ToShortDateString()(为空值添加适当的验证)

于 2012-06-20T14:51:13.010 回答
9

您可以在模型属性上使用 DisplayFormat 属性startDate

[DisplayFormat(DataFormatString="{0:dd/MM/yyyy}")]
public DateTime? startDate { get; set; }

刚刚使用DisplayFor(modelItem => item.startDate)

另一种选择是为格式创建一个只读属性:

public String startDateFormatted { get { return String.Format("{0:dd/MM/yyyy}", startDate); } }

并使用DisplayFor(modelItem => item.startDateFormatted)

于 2012-06-20T14:53:02.440 回答
1

对我来说,我能够做与上述答案类似的事情,但使用“值”属性不断给出错误。

<td>
@item.DOB.ToShortDateString()
</td>

其他需要注意的事项:我将 ASP.Net Core MVC 与 .NET 5 框架一起使用,因此不确定这些天是如何分类或调用的。

希望这可以帮助其他人在以后遇到这个问题。

于 2021-08-06T21:47:09.630 回答