4

我正在使用MVC 4Razor 视图,并且无法理解为什么我的 Date 字段上的 Edit 视图没有正确绑定到内置的 jQuery datepicker。

该字段Date在数据库和DateTime域模型中属于数据类型。我不想显示时间,只显示日期。该字段是必需的并且需要格式化。

我的观点是这样的:

<div class="editor-label">
    @Html.LabelFor(model => model.Appointment.EndDate)
</div>
<div class="editor-field">
    @Html.EditorFor(model => model.Appointment.EndDate)
    @Html.ValidationMessageFor(model => model.Appointment.EndDate)
</div>

如果我在此字段上的元数据是

[Required(ErrorMessage = "End Date must be a valid date, like 05/13/2016.")]
[DataType(DataType.Date)]
[Display(Name = "End Date")]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy}")]
public object EndDate { get; set; }

那么我在edit.cshtml上的编辑器输出是这样的:

<input class="text-box single-line" data-val="true" data-val-date="The field End Date must be a date." data-val-required="End Date must be a valid date, like 05/13/2016." id="Appointment_EndDate" name="Appointment.EndDate" type="date" value="05/09/2013">

这绘制了一个 jQuery 日期选择器,但没有设置值。

如果我从元数据中删除 DataType 属性并保持其他所有内容相同:

[Required(ErrorMessage = "End Date must be a valid date, like 05/13/2016.")]
[Display(Name = "End Date")]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy}")]
public object EndDate { get; set; }

那么我的编辑器输出是这样的:

<input class="text-box single-line valid" data-val="true" data-val-date="The field End Date must be a date." data-val-required="End Date must be a valid date, like 05/13/2016." id="Appointment_EndDate" name="Appointment.EndDate" **type="datetime"** value="05/09/2013">

这将绘制一个带有正确设置值的纯文本框(无日期选择器)。

我想使用 datepicker 但设置正确的值,我该怎么做?

4

1 回答 1

0

试试下面的代码:

[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
public DateTime? EndDate { get; set; }

(我使用了一个可以为空的日期时间;但它并不是真正需要的)

并在 GUI 中使用:

@Html.EditorFor(m => m.EndDate )

这应该有效。

于 2013-06-04T12:29:12.123 回答