我有一个传统的MVC应用程序,它有一个输入日期字段;
@Html.EditorFor(model => model.CompleteBy)
在ViewModel中饰为
[Display(Name = "Complete By")]
[DataType(DataType.Date)]
public Nullable<DateTime> CompleteBy { get; set; }
我有一个日期字段的EditorTemplate;
@model DateTime?
@Html.TextBox("", (Model.HasValue ? Model.Value.ToLongDateString() : string.Empty),
new { @class = "datePicker", @style = "width:200px;" })
在我的Javascript文件中,我将datepicker分配给datepicker类,如下所示;
var constantDateFormat = "dd MM yy";
$("input[type=date]").datepicker({
showOn: "both",
dateFormat: constantDateFormat,
changeMonth: true,
changeYear: true
});
在Edge中访问此应用程序时,日期不再显示,而是我看到mm / dd / yyyy。和datepicker完全不同。
那么我该如何解决这个问题呢?
答案 0 :(得分:0)
尝试从数据注释中删除[DataType(DataType.Date)]
,或者您可以尝试将类型用作文本,如下所示
@Html.TextBox("", (Model.HasValue ? Model.Value.ToLongDateString() : string.Empty), new {@type = "text", @class = "datePicker", @style = "width:200px;" })
答案 1 :(得分:0)
gvk的回答让我走上正轨。不幸的是,之前总是在日期工作的不错的EditorTemplate不再适用,我发现尝试将类型从“日期”更改为“文本”也不起作用。 所以我做的是将EditorFor更改为TextBoxFor;
@Html.TextBoxFor(model => model.CompleteBy, "{0:d MMMM yyyy}", new { @class = "datepicker" })
注意我也必须包含日期格式。设置字段的DateFormat属性似乎不起作用。
然后在JQuery我有
$("input.datepicker:text").datepicker({
showOn: "both",
dateFormat: constantDateFormat,
changeMonth: true,
changeYear: true
});
因此,在迁移到Windows 10和Edge之前,我需要更改我们使用的所有应用程序的日期代码。