【发布时间】:2014-06-05 08:50:54
【问题描述】:
使用 jQuery datepicker 插件选择数据范围,创建一个带有两个日期字段的剃须刀表单,显示为文本框。开始日期工作正常,但结束日期验证失败并显示“字段结束日期必须是日期”。下面是模型代码和.cshtml代码:
[Display(Name = "Start Date")]
public Nullable<DateTime> startDate { get; set; }
[Display(Name = "End Date")]
public Nullable<DateTime> endDate { get; set; }
<div id="dvDateRange">
@Html.TextBoxFor(e => e.startDate, new { @class = "datepicker", Value = Model.startDate.Value.ToString("dd/MM/yyyy") })
<span> to </span>
@Html.TextBoxFor(e => e.endDate, new { @class = "datepicker", Value = Model.endDate.Value.ToString("dd/MM/yyyy") })
</div>
两者设置相同,为什么开始日期成功而结束日期失败?
有什么想法吗?
编辑
所以绝对是文化问题,似乎是导致问题的 Chrome。 进行了以下修改,仍然遇到同样的问题。
型号代码:
[Display(Name = "Start Date")]
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
public Nullable<DateTime> startDate { get; set; }
[Display(Name = "End Date")]
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
public Nullable<DateTime> endDate { get; set; }
.cshtml代码:
<div id="dvDateRange">
@Html.EditorFor(e => e.startDate, new { @class = "datepicker", Value = Model.startDate.Value.ToString("dd/MM/yyyy") })
<span> to </span>
@Html.EditorFor(e => e.endDate, new { @class = "datepicker", Value = Model.endDate.Value.ToString("dd/MM/yyyy") })
</div>
日期选择器代码:
$("#dvDateRange input").datepicker({
showOn: "button",
buttonImage: "/Images/calendar.gif",
buttonImageOnly: true,
dateFormat: "dd/mm/yy"
});
是否要覆盖 Chrome 中的文化设置?
【问题讨论】:
-
很可能您在浏览器和服务器上有不同的文化。可能开始日期是正确的,因为日期小于 12(因此 2014 年 6 月 5 日是两种格式的有效日期:05/06/2014 和 06/05/2014)
-
这似乎是明智的。如何强制它始终使用该格式?
标签: jquery asp.net-mvc asp.net-mvc-4 date razor