使用数据注释分配 DateTime 的格式?

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

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

如果我想显示日期,或者用日期填充一个文本框,我可以这样做:

<%: Model.StartDate %>


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

无论何时显示日期,它都像这样显示: 01/01/201112:00:00 AM

But I'd like to only display 2011年1月1日

Is there a way to apply a display format with data annotations? I don't want to have to go to every instance where I display a date, and add some code to format it.

265209 次浏览

试着在上面加上:

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

你试过这个吗?

[DataType(DataType.Date)]

Use EditorFor rather than TextBoxFor

像下面这样应用数据注释:

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

In mvc 4 you can easily do it like following using TextBoxFor..

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

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

评论之后

          // [DataType(DataType.DateTime)]

使用数据注释属性:

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

以下连结的步骤 -7可能有助你..。

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

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

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


}
set { dob = value; }
}

Use this, but it's a complete solution:

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

如果数据字段已经是 DateTime 数据类型,则不需要使用 [DataType(DataType.Date)]进行注释; 只需使用:

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

on the jQuery, use datepicker for you calendar

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

在 HTML 中,使用 EditorFor助手:

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

我同意

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

这是我最喜欢的在模型中使用注释的方法:

[DisplayFormat(DataFormatString = "{0:dd/MM/yyy}")]