对于MVC4 DateTime,使用DataFormatString的视图中不显示日期

时间:2012-12-13 09:49:25

标签: c# .net asp.net-mvc

我在使用MVC4 DateTime对象正确显示日期方面存在一些问题。

在控制器中,我从数据库中的正确值设置我的日期:Birthdate = person.Birthdate

在ViewModel中:

[DisplayFormat(DataFormatString = "DD/mm/YY", ApplyFormatInEditMode = true, ConvertEmptyStringToNull = true)]
public DateTime? Birthdate { get; set; }

在视图中:

@using (Html.BeginHorizontalControlFor(m => m.Birthdate))
{
    @Html.EditorFor(model => model.Birthdate)
    @Html.ValidationMessageFor(model => model.Birthdate)
}

输出:

<input class="text-box single-line input-validation-error" data-val="true" data-val-date="The field Birthdate must be a date." id="Birthdate" name="Birthdate" type="datetime" value="DD/mm/YY">

我的日期值在哪里?为什么不起作用?

2 个答案:

答案 0 :(得分:3)

DD/mm/YY格式错误 - 您的所有组件都有错误。您应该使用dd/MM/yy(或类似内容;我个人建议您使用yyyy代替yy)。有关详细信息,请参阅MSDN documentation for custom date/time formats

另请注意,这是针对特定文化的 - 您确定这是针对您所定位的所有文化的适当格式吗? (我怀疑,从可用性的角度来看,使用某种日历控件会更好。)

答案 1 :(得分:0)

我必须修改该属性上DataFormatString位的语法才能使其工作。 尝试:

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