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

Ste*_*ven 89 c# asp.net asp.net-mvc data-annotations

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

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

如果我想显示日期,或用日期填充文本框,我有以下内容:

<%: Model.StartDate %>

<%: Html.TextBoxFor(m => m.StartDate) %>
Run Code Online (Sandbox Code Playgroud)

每当显示日期时,它显示为:01/01/2011 12:00:00 AM

但我想只显示01/01/2011

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

Dav*_*Fox 140

尝试用以下标记来标记:

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy}")]
Run Code Online (Sandbox Code Playgroud)

  • 如果您尝试Html.EditorFor(m => m.StartDate)它应该工作 (10认同)
  • `DisplayFormat`只适用于`EditorFor`和`DisplayFor`助手. (5认同)
  • 我能够通过Html.TextBoxFor中的format参数来解决这个问题.通过将其设置为`@Html.TextBoxFor(model => model.YOUR_DATE,"{0:MM/dd/yyyy}")`我能够得到要显示的日期.在这里找到了这个[http://stackoverflow.com/a/14529347/2938775]. (5认同)
  • @Steven:如果你还没有尝试删除`[DataType(DataType.DateTime)]`吗? (3认同)

rk1*_*962 38

你试过这个吗?

[DataType(DataType.Date)]
Run Code Online (Sandbox Code Playgroud)

  • 如果浏览器支持,还将启用HTML5日期选择器支持。 (2认同)

Has*_*nab 23

在mvc 4中,您可以轻松地执行以下操作TextBoxFor..

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

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


小智 20

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

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy}")]
Run Code Online (Sandbox Code Playgroud)

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

    $(document).ready(function () {
        $('#StartDate').datepicker();
    });
Run Code Online (Sandbox Code Playgroud)

在您的HTML上,使用EditorFor帮助器:

    @Html.EditorFor(model => model.StartDate)
Run Code Online (Sandbox Code Playgroud)


Chi*_*rag 16

应用DataAnnotation如:

[DisplayFormat(DataFormatString = "{0:MMM dd, yyyy}")]
Run Code Online (Sandbox Code Playgroud)


Ren*_*ado 9

使用它,但它是一个完整的解决方案:

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


Fel*_*ras 7

这对我行得通

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


Md.*_*mun 5

评论后

          // [DataType(DataType.DateTime)] 
Run Code Online (Sandbox Code Playgroud)

使用数据注释属性:

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
Run Code Online (Sandbox Code Playgroud)

以下链接的 STEP-7 可能会帮助您...

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