我看到有一些类似的问题,但没有一个能解决我的问题。
我正在使用 Entity Framework 4.3 开发 MVC3 应用程序。我有一个英国日期字段,我计划允许用户使用 Jquery UI 日期选择器进行编辑(感谢这个博客,我开始工作了)。
对我来说幸运的是,此博客包含有关使用英国格式制作日期选择器的说明,但是,EF 验证仍然告诉我需要输入有效的日期格式。奇怪的是,它并没有阻止我将日期提交给数据库,它只是启动并显示消息的不显眼的验证。
目前我有以下数据注释:
[DataType(DataType.Date)]
public System.DateTime Module_Date { get; set; }
但我也尝试添加:
[DisplayFormat(DataFormatString="{0:dd/MM/yyyy}")]
这根本没有效果。我希望有人有一个解决方案,因为我不喜欢关闭不显眼的验证来停止这个错误消息。
谢谢
编辑
在@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;
}
}
在文件的Application_Start()
方法中使用这个Global.asax.cs
:
ModelBinders.Binders.Add(typeof(DateTime), new DateTimeBinder());
ModelBinders.Binders.Add(typeof(DateTime?), new DateTimeBinder());