用数据注释分配DateTime格式?

我在我的视图模型中有这个属性:

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

如果我想显示date,或用date填充文本框,我有这些:

 <%: Model.StartDate %> <%: Html.TextBoxFor(m => m.StartDate) %> 

每当显示date时,显示如下: 01/01/2011 12:00:00 AM

但我只想显示01/01/2011

有没有办法使用数据注释显示格式? 我不想去每个显示date的实例,并添加一些代码来格式化它。

尝试使用以下标签标记:

 [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy}")] 

你试过这个吗?

 [DataType(DataType.Date)] 

在MVC 4中,你可以很容易地使用TextBoxFor

 @Html.TextBoxFor(m => m.StartDate, "{0:MM/dd/yyyy}", new { @class = "form-control default-date-picker" }) 

因此,您不需要在模型或视图模型类中使用任何数据注释

应用DataAnnotation,如下所示:

 [DisplayFormat(DataFormatString = "{0:MMM dd, yyyy}")] 

使用这个,但它是一个完整的解决scheme:

 [DataType(DataType.Date)] [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")] 

如果您的数据字段已经是DateTime数据types,则不需要使用[DataType(DataType.Date)]作为注释; 只是使用:

 [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy}")] 

在jQuery上,使用datepicker为你的日历

  $(document).ready(function () { $('#StartDate').datepicker(); }); 

在你的HTML上,使用EditorFor帮手:

  @Html.EditorFor(model => model.StartDate) 

使用EditorFor而不是TextBoxFor

评论之后

  // [DataType(DataType.DateTime)] 

使用数据注释属性:

 [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")] 

以下链接的STEP-7可能会帮助你…

http://ilyasmamunbd.blogspot.com/2014/12/jquery-datepicker-in-aspnet-mvc-5.html

在创build模型时使用下面的代码来设置你的属性,我认为你的问题将被解决,而且时间不会出现在数据库中,你不需要添加任何注释。

 private DateTime? dob; public DateTime? DOB { get { if (dob != null) { return dob.Value.Date; } else { return null; } } set { dob = value; } }