指定的值不符合所需的格式yyyy-MM-dd
我有一个.Net MVC 5应用程序正在使用数据注释,entity frameworkJQuery的2.1.3和JQuery的UI 1.11.4。
当我使用英国格式“dd / MM / YYYY”呈现inputtypes为date的编辑表单时; 使用Google Chrome时出现以下错误讯息:
指定的值'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" />
该值在input控件中正确设置,但date不显示在浏览器中。 我第一次以为这是jQuery的问题,因为它是出现在jQuery脚本文件,但在IE和Firefoxtesting时,一切工作正常。
然后,我认为这是我在Chrome上的区域设置,因为默认情况下,Chrome认为每个人的英语都在美国,所以我将区域设置更改为英国,但仍然出现同样的问题。
一个简单的解决方法是将我的模型中的格式更改为普通格式,但对于英国用户来说,这是一个小小的外星人。
有没有办法告诉接受date格式在“dd / MM / YYYY”铬?
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" })
后面的选项允许您在@Html.DisplayFor()
保留DataFormatString = "{0:dd/MM/yyyy}")
@Html.DisplayFor()
您可以使用InputTagHelper.Format
<input asp-for="MyDate" asp-format="{0:yyyy-MM-dd}" />