我刚刚升级一个ASP.Net MVC应用程序到MVC-4。基于DateTime值的输入的字段编辑器现在包括HTML-5 type =“date”属性/值声明。
现在,在Chrome中查看时,我的日期输入在输入字段中显示为“mm / dd / yyyy”
即使当我使用value属性传递格式正确的日期时:
<input value="2012/10/02" type="date"/>
我仍然在输入框中输入“mm / dd / yyyy”,直到用户手动更改该值。
问题似乎是与Chrome,并独立于我的后端框架。看到这个问题在行动:jsFiddle
…编辑记录的大问题,当然。如果用户拉起已经具有有效日期的记录,则不会通过提交时的验证,除非他/他单击该字段并手动重置该值。
没有与其他浏览器的问题。
这是Chrome的错误吗?或者我错过了一些关于HTML-5日期字段应该工作的方式?
更新
看到这个修订小提琴:http://jsfiddle.net/HudMe/5/它有一个HTML-4和一个HTML-5日期输入,每个“10/01/2012”设置为页面加载的值。
点击任一日期字段。
Javascript应该利用该元素的字段值创建警报。
由于有效日期已与value属性一起传递,因此应显示“10/01/2012”,但在Chrome中,对于HTML-5日期字段,不显示任何内容。手动重置此值,然后再次单击,它现在将显示。
来自HTML5字段的值在Safari,Firefox,IE和Opera中的页面加载后显示和警告,而不进行调整。
注意接受答案:
对于Asp.net mvc-4的其他用户,您可以使用视图模型中DateTime字段声明的[DisplayFormat]属性调整显示格式。 (在http://stackoverflow.com/a/12634470/613004找到)
解决方法
在chrome中设置值,你需要做YYYY-MM-DD我猜是因为这个工作:
http://jsfiddle.net/HudMe/6/
所以要使其工作,你需要设置日期为2012-10-01