为MVC3 DateTime设置DataFormatString

时间:2011-09-26 11:35:06

标签: asp.net-mvc asp.net-mvc-3 datetime

我在使用MVC3 DateTime 对象正确显示日期时遇到了一些问题。

在控制器中,我设置了 Date = DateTime.Now

在ViewModel中:

[Required(ErrorMessage = "Please enter a date")]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd.mm.yyyy}")]
public DateTime Date { get; set; }

在视图中:

@Html.LabelFor(m => Model.Date, "Date") 
@Html.ValidationMessageFor(m => Model.Date) 
@Html.TextBoxFor(m => Model.DatoForIntervju, new { @class = "datepicker" })

输出:

<input class="datepicker" (...) value="26.09.2011 13:26:16" />

但是,我希望该值 26.09.11

为什么不起作用?

2 个答案:

答案 0 :(得分:17)

变化

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

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

然后,使用

而不是textboxfor
@Html.EditorFor(m => m.Date)

答案 1 :(得分:3)

你的viewModel正确(如果你想在C#中显示短年,你只需要使用“yy”),但我不明白你对这段代码做了什么

@Html.LabelFor(m => Model.Date, "Date")
@Html.ValidationMessageFor(m => Model.Date) 
@Html.TextBoxFor(m => Model.DatoForIntervju, new { @class = "datepicker" })

我向您展示了如何添加 datepicker ,在此示例中 date 显示并以正确格式从视图返回:

    @Html.EditorFor(m => m.Date) 
    @Html.ValidationMessageFor(m => m.Date)

    <script type="text/javascript">
        $(document).ready(function () {
            $('#Date').datepicker({ firstDay: 1, dateFormat: 'dd.mm.yy', clickInput: true });
        });
    </script>