DisplayFormatAttribute不起作用

时间:2011-06-30 15:02:49

标签: asp.net-mvc entity-framework razor dataformat

我正在使用带有Razor和EntityFramework的MVC3。为了处理事件调度,我使用jquery datepicker和timepicker来创建StartDate,StartTime,EndDate,EndTime。我试图在我的ViewModel中使用DisplayFormatAttribute但文本框仍然显示整个DateTime字符串。

在我的viewmodel中,我有以下属性:

    [DisplayFormatAttribute(DataFormatString = "{0:mm/dd/yyyy}")]
    public DateTime StartDate   { get; set; }

    [DisplayFormatAttribute(DataFormatString = "{0:h:mm tt}")]
    public DateTime StartTime   { get; set; }

我的观点如下:

    <div id="event-datetime-range" style="display:inline">
        <span id="event-startdatetime">
            @Html.TextBoxFor(model => model.StartDate, new { placeholder = "Start Date", id = "event-start-date", @class = "event-datepicker" });

            <span class="event-timerange">at</span>
            @Html.TextBoxFor(model => model.StartTime, new { placeholder = "Time", id = "event-start-time", @class = "event-timepicker event-timerange" })
        </span>

有谁能告诉我我做错了什么?提前谢谢!

3 个答案:

答案 0 :(得分:3)

DisplayFormat属性用于Html.DisplayFor()方法,不适用于Html.TextBoxFor。我建议使用自定义EditorTemplate来显示您的日期格式。或者使用jQuery。

答案 1 :(得分:1)

如果您使用的是JQuery日期选择器,请在创建控件时使用dateFormat选项。

jquery datepicker

同样在日期/时间格式中,“mm”是分钟,其中“MM”是月份。

您可能还想尝试@Html.EditorFor()而不是@Html.TextBoxFor()

答案 2 :(得分:0)

尝试使用[DisplayFormat(DisplayFormatString={"0:d})]