使用DataAnnotation的ASP.NET MVC Core仅日期格式不起作用

nam*_*nam 2 data-annotations asp.net-mvc-viewmodel asp.net-core

viewmodel视图中使用的跟随应该显示为StartDate,例如9/30/2015。但它显示为9/30/2015 12:00:00 AM。我怎样才能使它不显示时间,同时使用 DataAnnotaion?我知道我只能使用@Model.StartDate.ToString("MM/dd/yyy")内部视图显示日期。但这意味着您必须在使用以下各项的每个视图中执行此操作ViewModel

ViewModel

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

更新

上面相应的模型类ViewModel已经具有以下内容DataAnnotation,可以在SQL Server表中正确创建数据类型为Date;并且当您在其中的相应表上运行查询时,SSMS它会正确显示StartDate列的数据(仅包含日期,例如9/30/2015等)。

模型

...
[DataType(DataType.Date)]
public DateTime StartDate { get; set; }
...
Run Code Online (Sandbox Code Playgroud)

实际上,sql db中的StartDate Date仅是。此外,如果我对其执行查询,SSMS则仅正确返回日期。

Eri*_*sch 5

您的问题有两种解决方案。根据您的评论,您当前正在使用它@Model.StartDate来显示日期。

您可以执行以下操作:

@Model.StartDate.ToString("d")
Run Code Online (Sandbox Code Playgroud)

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

[DataType(DataType.Date)]
public DateTime StartDate {get;set;}
Run Code Online (Sandbox Code Playgroud)

然后,在您看来使用:

@Html.DisplayFor(m => m.StartDate)
Run Code Online (Sandbox Code Playgroud)