我在使用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">
我的日期值在哪里?为什么不起作用?
答案 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}")]