使用jQuery datepicker插件用于选择数据范围的剃刀形式有两个日期字段显示为文本框。开始日期正常工作,但结束日期未通过验证,并显示“字段结束日期必须是日期。”下面是型号代码和.cshtml代码:Razor DateField验证失败,说“必须是日期”
[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中压倒一切的文化设置?
很可能你在浏览器和服务器上有不同的文化。 5月的开始日期是正确的,因为这一天少于12天(因此2014年6月5日是两种格式的有效日期:2014年6月5日和2014年5月6日) – ssimeonov
这似乎是合理的。如何强制它使用整个格式? – HuwD
你可以检查这个http://stackoverflow.com/questions/1328025/jquery-ui-datepicker-change-date-format – ssimeonov