ASP.NET 使用 DataAnnotation 时,仅 MVC 核心日期格式不起作用

ASP.NET MVC Core date only format is not working using DataAnnotation

在视图中使用的以下 viewmodel 应该将 StartDate 显示为 9/30/2015。但它显示为 9/30/2015 12:00:00 AMusing DataAnnotaion 时如何让它不显示?我知道我可以在视图内部使用 @Model.StartDate.ToString("MM/dd/yyy") 来仅显示日期。但这意味着您必须在使用以下 ViewModel:

的每个视图中执行此操作

ViewModel:

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

更新

上面ViewModel对应的模型class已经有下面的DataAnnotation在SQL服务器table中正确创建数据类型为Date;当您 运行 对 SSMS 中相应的 table 进行查询时,它会正确显示 StartDate 列的仅包含日期的数据,例如 9/30/2015 等)

型号

...
[DataType(DataType.Date)]
public DateTime StartDate { get; set; }
...

sql 数据库中的 StartDate 实际上只是 Date。此外,如果我 运行 在 SSMS 上查询它正确 returns 日期。

您的问题有两种解决方案。根据您的意见,您目前正在使用 @Model.StartDate 显示日期。

您可以这样做:

@Model.StartDate.ToString("d")

或者,您可以在 ViewModel 中使用基于模型的方法并执行以下操作:

[DataType(DataType.Date)]
public DateTime StartDate {get;set;}

那么,在你看来使用:

@Html.DisplayFor(m => m.StartDate)