Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Edge中的C#MVC(在它取代Internet Explorer后)日期错误_C# - Fatal编程技术网

Edge中的C#MVC(在它取代Internet Explorer后)日期错误

Edge中的C#MVC(在它取代Internet Explorer后)日期错误,c#,C#,当我们从Internet explorer更改为Edge时,我开始收到一个视图错误字段NextContactDate不是日期。我想解决这个问题,阻止它发生。这是一个C#应用程序,最初编写于2012年,在PC上运行,他们用WIN 10取代了WIN 7 PC。 Edit.cshtml中字段的原始视图代码为: <tr> <td>@Html.LabelFor(model => model.sitestatus.StatusDate)</td>

当我们从Internet explorer更改为Edge时,我开始收到一个视图错误字段NextContactDate不是日期。我想解决这个问题,阻止它发生。这是一个C#应用程序,最初编写于2012年,在PC上运行,他们用WIN 10取代了WIN 7 PC。 Edit.cshtml中字段的原始视图代码为:

<tr>
        <td>@Html.LabelFor(model => model.sitestatus.StatusDate)</td>
        <td>@Html.TextBoxFor(m => m.sitestatus.StatusDate, new { @Value = Model.sitestatus.StatusDate.ToString("dd/MM/yyyy"), id = "dp", style = "width:90px;" })
        @Html.ValidationMessageFor(model => model.sitestatus.StatusDate)</td>
        <td>The Date of the Status Change</td>
</tr>

@LabelFor(model=>model.sitestatus.StatusDate)
@Html.TextBoxFor(m=>m.sitestatus.StatusDate,新的{@Value=Model.sitestatus.StatusDate.ToString(“dd/MM/yyyyy”),id=“dp”,style=“width:90px;”)
@Html.ValidationMessageFor(model=>model.sitestatus.StatusDate)
状态更改的日期

我们如何使其工作?

这是通过修改Site Status Edit.cshtml代码解决的:

<tr>
        <td>@Html.LabelFor(model => model.sitestatus.StatusDate)</td>
        <td>@{ Html.EnableClientValidation(false); }
        @Html.TextBoxFor(m => m.sitestatus.StatusDate, "{0:dd/MM/yyyy}", new { id="dp", style="width:90px;" })
        @Html.ValidationMessageFor(model => model.sitestatus.StatusDate)
        @{ Html.EnableClientValidation(true); }</td>
</tr>

@LabelFor(model=>model.sitestatus.StatusDate)
@{Html.EnableClientValidation(false);}
@Html.TextBoxFor(m=>m.sitestatus.StatusDate,“{0:dd/MM/yyyy}”,新的{id=“dp”,style=“width:90px;”)
@Html.ValidationMessageFor(model=>model.sitestatus.StatusDate)
@{Html.EnableClientValidation(true);}

诀窍是在代码中包含Html.EnableClientValidation false,但这对我来说是新的。任何人都知道它的作用以及它可能影响ie的其他内容它是否允许Chrome在与ie和Edge相同的日期工作?

禁用验证不是修复方法,它是一个非常严重的错误。最初的代码有缺陷——它没有绑定到日期属性并让客户端格式化它,而是将日期时间值转换为本地化字符串。也许更好的解决方案是使用
input type=“date”
。我完全赞成一个更好的解决方案。非常感谢您的快速回复。我完全支持一个更好的解决方案,但这是我花了很长时间上网后能想到的最好的解决方案。如果你能提供一个更好的,我会尝试并报告回来。在这种情况下,请检查副本。自2012年以来,HTML和Javascript都发生了很多变化,8年前的验证脚本在其他地方可能会失败。您发布的错误来自Javascript,因为无法将字符串值解析为日期。您可能需要升级客户端验证库