我有一个使用Data Annotations,Entity-Framework Jquery 2.1.3和Jquery UI 1.11.4的.Net MVC 5应用程序。
当我使用英国格式“dd / MM / YYYY”呈现类型日期输入的编辑表单时;使用Google Chrome时会显示以下错误讯息:
The specified value ’10/10/2001′ does not conform to the required format,‘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()