指定的值不符合要求的格式yyy-MM-dd

 2023-02-17    278  

问题描述

i有一个.NET MVC 5应用程序,该应用程序正在使用数据注释,实体 – 框架jQuery 2.1.3和jQuery UI 1.11.4.

当我使用英国格式” dd/mm/yyyy”呈现类型日​​期输入的编辑表单时;使用Google Chrome时出现以下错误消息:

指定的值不符合要求的格式yyy-MM-dd

指定的值’10/10/2001’不符合所需的格式’yyyy-mm-dd’. jQuery-2.1.3.js:5317

模型

public class MyModel
{
    [Column(TypeName = "date"), DataType(DataType.Date), Display(Name = "My date")]
    [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}")]
    public string MyDate { get; set; }
}

标记

<input class="text-box single-line" data-val="true" data-val-date="The field My date must be a date." id="MyDate" name="MyDate" type="date" value="10/10/2001" />

该值在输入控件中正确设置,但日期未显示在浏览器中.我首先认为这是jQuery的问题,因为它正在出现jQuery脚本文件,但是在IE和Firefox中进行测试时,一切正常.

我然后以为这是我在Chrome中的区域环境,因为默认情况下,Chrome认为每个人都在美国,我将区域环境更改为英国,但仍然出现同样的问题.

一个简单的解决方法是将我的模型中的格式更改为通用,但对于英国用户来说,这是有点外星人.

有没有办法告诉Chrome在” dd/mm/yyyy”中接受日期格式?

推荐答案

HTML5日期选择器状态的规格必须以格式yyyy-MM-dd(ISO格式).这意味着您DisplayFormatAttribute必须是

[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
public string MyDate { get; set; }

另外,您可以使用

手动添加格式

@Html.TextBoxFor(m => m.MyDate, "{0:yyyy-MM-dd}", new { @type = "date"  })

以后的选项允许您保留DataFormatString = “{0:dd/MM/yyyy}”)在@Html.DisplayFor()

中使用

其他推荐答案

问题可以来自类型=” date”.无论如何,那是我的情况.一旦将其更改为type =” text”.如果使用MVC包装器构建界面,则需要相应地替换或设置HTML属性.

其他推荐答案

您不需要任何jQuery或ASP功能来修复它.简单的JS会很好.
问题是浏览器需要格式yyyy-mm-dd.

和tolocalestring不允许日期以这种格式.因此,搜索后,我发现这是ISO格式,我们可以使用date().toisostring()以所需格式获取日期.

我使用切片方法来提取日期零件,因为date().toisostring()返回日期.

我的代码:

date: new Date().toISOString().slice(0, 10)

以上所述是小编给大家介绍的指定的值不符合要求的格式yyy-MM-dd,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!

原文链接:https://www.77isp.com/post/34270.html

=========================================

https://www.77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。