HTML.EditorFor日期在Edge浏览器中不起作用

时间:2018-01-26 12:07:24

标签: jquery asp.net-mvc datepicker

我有一个传统的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完全不同。

那么我该如何解决这个问题呢?

2 个答案:

答案 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之前,我需要更改我们使用的所有应用程序的日期代码。