在一个 MVC3 应用程序中,我使用了一个 jQuery datepicker 插件,它在 Firefox 和 Chrome 中的显示完全不同。应用中有相关代码和两张截图:
<head>
<link href="@Url.Content("~/Content/themes/redmond/jquery-ui-1.8.18.custom.css")" rel="stylesheet" type="text/css" />
<script src="@Url.Content("~/Scripts/jquery-ui-1.8.18.custom.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.ui.datepicker.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.ui.datepicker-fr.js")" type="text/javascript"></script>
<script>
$(document).ready(function () {
$('.datefield').datepicker({
showOn: 'both',
buttonImage: "/content/images/calendar.gif",
showAnim: "clip",
regional: "fr",
defaultDate: null,
changeMonth: true,
changeYear: true
});
});
</script>
</head>
@using(...)
{
...
@Html.LabelFor(model => model.candidat.date_naissance)
@Html.EditorFor(model => model.candidat.date_naissance, new { @class = "date" })
...
}
我使用 EditorTemplate:
@model DateTime
@Html.TextBox("", String.Format("{0:d}", Model.ToShortDateString()),
new { @class = "datefield", type = "date" })
在模型中,字段 candidat.date_naissance 为:
[Required(ErrorMessageResourceType = typeof(CandidatResources), ErrorMessageResourceName = "RequiredDateNaissanceMessage")]
[Display(ResourceType = typeof(CandidatResources), Name = "DateNaissanceDisplay")]
[DataType(DataType.Date, ErrorMessageResourceType = typeof(CandidatResources), ErrorMessageResourceName = "InvalidDateNaissanceMessage")]
public System.DateTime date_naissance { get; set; }
生成的 HTML 是:
在火狐中:
输入类型="日期" 值="12/19/1974" name="candidat.date_naissance" id="candidat_date_naissance" data-val-required="La date de naissance est obligatoire" data-val="true" class= “日期字段有日期选择器”
- 在铬:
input class="datefield hasDatepicker" data-val="true" data-val-required="La date de naissance est obligatoire" id="candidat_date_naissance" name="candidat.date_naissance" type="date" value="12/ 19/1974"
最后,这里是相同数据的截图:
火狐:
铬合金:
在 Chrome 中,始终显示字符串“mm/dd/yyyy”,即使已经存在日期(例如,在输入日期并保存在 Firefox 中之后,我希望在刷新时也能在 Chrome 中看到它,但事实并非如此发生)。
这种行为的解释是什么以及如何解决?
我已经尝试过这个解决方案,但无济于事。
注意: 这发生在 Cassini 服务器和 IIS(本地和虚拟框)上。