当使用jQuery UI Datepicker时,我们在Google Chrome中使用时会遇到问题:当我们输入日期高于12的日期时,它不接受它作为有效日期,这是因为chrome认为dateformat是mm/dd/YYYY.我们尝试通过添加代码来尝试将日期设置强制为dd/mm/yyyy来解决此问题
$('.date').datepicker({ dateFormat: "dd/mm/yy" });
Run Code Online (Sandbox Code Playgroud)
有没有办法解决这个问题,所以我们的datepicker将接受dd/mm/yyyy值?我们在Google Chrome中只有这个问题,datefix适用于firefox,即&safari.我们在这个项目中使用ASPX和MVC3.
如果有人能解决我们的问题,那就太好了
谢谢
我看到有一些类似的问题,但没有一个能解决我的问题.
我正在使用Entity Framework 4.3开发MVC3应用程序.我有一个英国日期字段,我计划允许用户使用Jquery UI datepicker进行编辑(由于这个博客我得到了工作).
幸运的是,这个博客包含了使用英国格式制作日期选择器的说明,但是,EF验证仍然告诉我需要输入有效的日期格式.很奇怪,它并没有阻止我将日期提交给数据库,只是不显眼的验证开始并显示消息.
目前我有以下数据注释:
[DataType(DataType.Date)]
public System.DateTime Module_Date { get; set; }
Run Code Online (Sandbox Code Playgroud)
但我也试过添加:
[DisplayFormat(DataFormatString="{0:dd/MM/yyyy}")]
Run Code Online (Sandbox Code Playgroud)
这完全没有效果.我希望有人有一个解决方案,因为我不喜欢关闭不引人注意的验证来停止此错误消息.
谢谢
编辑
在@Iridio回答之后,我考虑添加一个模型绑定,实际上从像我这样读过它的几个帖子似乎是正确的做法,但我想出的并没有效果.这是我尝试过的:
public class DateTimeBinder : IModelBinder
{
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
var date = value.ConvertTo(typeof(DateTime), CultureInfo.CurrentCulture);
return date;
}
}
Run Code Online (Sandbox Code Playgroud)
Application_Start()在Global.asax.cs文件的方法中使用此方法:
ModelBinders.Binders.Add(typeof(DateTime), new DateTimeBinder());
ModelBinders.Binders.Add(typeof(DateTime?), new DateTimeBinder());
Run Code Online (Sandbox Code Playgroud) c# validation entity-framework data-annotations asp.net-mvc-3