无法在MVC 5中正确格式化日期

时间:2015-01-27 05:23:38

标签: c# asp.net-mvc razor

我的模型属性是这样的

    [DisplayFormat(DataFormatString = "{0:MMM dd, yyyy}"), DisplayName("Procedure Effective From"),
     DataType(DataType.Date)]
    public DateTime ProcedureEffectiveFrom { get; set; }

在视野中

     @Html.TextBoxFor(model => model.ProcedureEffectiveFrom, new { @class = "form-control date-picker" })
  @Html.ValidationMessageFor(model => model.ProcedureEffectiveFrom)

我期待像这样的输出

1/27/2015

但输出是

1/27/2015 10:40:45 AM

有谁可以指出我做错了什么?

3 个答案:

答案 0 :(得分:1)

使用[DisplayFormat][DataType]时,才会尊重@Html.DisplayFor()@Html.EditorFor()。您需要使用接受格式字符串的重载来设置格式。

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

答案 1 :(得分:1)

使用它

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MMM dd, yyyy}"),DisplayName("Procedure Effective From")]
      public DateTime ProcedureEffectiveFrom { get; set; }

在视图中使用

 @Html.EditorFor(model => model.ProcedureEffectiveFrom, new { @class = "form-control date-picker" })
@Html.ValidationMessageFor(model => model.ProcedureEffectiveFrom)

并显示日期时间

  @Html.DisplayFor(model => model.ProcedureEffectiveFrom)

答案 2 :(得分:1)

在视图中您可以试试这个。

@Html.TextBoxFor(m => m.ProcedureEffectiveFrom, new { htmlAttributes = new { @Value = m.ProcedureEffectiveFrom.ToString("MM/dd/yyyy"), @class = "form-control" } })