2017-07-27 45 views
1

以下在视图中使用的viewmodel应该显示StartDate,例如9/30/2015。但它显示为9/30/2015 12:00:00 AM。我怎样才能让它显示没有时间,而使用DataAnnotaion?我知道我可以在视图内使用@Model.StartDate.ToString("MM/dd/yyy")只显示日期。但是,这将意味着你必须这样做,在每一个观点,即使用以下ViewModel使用DataAnnotation的ASP.NET MVC核心日期格式不起作用

视图模型

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

UPDATE

相应的模型类以上ViewModel已经是具有以下DataAnnotation正确创建SQL Server表中的数据类型为Date;当你在SSMS运行相应的表的查询它正确的日期只显示起始日期列的数据,说,2015年9月30日等)

型号

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

开始日期在sql db实际上只是Date。此外,如果我在SSMS上运行查询,它只会正确返回日期。

+0

您是否尝试过使用'[DataType(DataType.Date)]'属性? –

+0

@ErikFunkenbusch为了回答你的问题,我在我的文章中增加了一个** UPDATE **部分。此外,我确实在ViewModel上尝试了您的建议,但无济于事。 – nam

+0

如果使用EditorFor或DisplayFor进行渲染,则使用DataType属性应该可以工作。 –

回答

1

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

你可以这样做:

@Model.StartDate.ToString("d") 

或者,您可以使用基于模型的方法在您的视图模型,并做到这一点:

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

然后,在您的视图使用:

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

您在我们的[聊天室]中添加的最新评论(https://chat.stackoverflow.com/rooms/150435/discussion-between-nam-and-erik-funkenbusch)可能会回答我的[this](https:// stackoverflow.com/q/45382084/1232087)。如果你喜欢,你可以在那里写一个答案,我会将其标记为答案。 – nam