gpt4 book ai didi

c# - 使用 ComponentModel.DataAnnotations 对英国日期格式进行 MVC3 验证(也使用 jquery ui datepicker)

转载 作者:太空狗 更新时间:2023-10-29 21:29:18 25 4
gpt4 key购买 nike

我看到有一些与此类似的问题,但没有一个能解决我的问题。

我正在使用 Entity Framework 4.3 开发 MVC3 应用程序。我有一个英国日期字段,我计划允许用户使用 Jquery UI 日期选择器进行编辑(感谢 this blog,我开始工作了)。

对我来说幸运的是,该博客包含有关使用英国格式制作日期选择器的说明,但是,EF 验证仍然告诉我需要输入有效的日期格式。奇怪的是,它并没有阻止我将日期提交给数据库,它只是启动并显示消息的不显眼的验证。

目前我有以下数据注释:

[DataType(DataType.Date)]
public System.DateTime Module_Date { get; set; }

但我也尝试添加:

[DisplayFormat(DataFormatString="{0:dd/MM/yyyy}")]

根本没有效果。我希望有人有解决方案,因为我不想关闭不引人注目的验证来停止此错误消息。

谢谢

编辑

在@Iridio 回答之后,我研究了添加一个模型绑定(bind),事实上,从我读到的像这样的几篇文章来看,这似乎是正确的做法,但我想出的没有任何效果。这是我尝试过的:

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;
}
}

Global.asax.cs 文件的 Application_Start() 方法中:

ModelBinders.Binders.Add(typeof(DateTime), new DateTimeBinder());
ModelBinders.Binders.Add(typeof(DateTime?), new DateTimeBinder());

最佳答案

是的,问题出在 jquery 验证脚本坚持使用 US datefomat。尽管世界上大多数人都使用 dd/mm/yyyy,但我会克制自己不要大声疾呼。

无论如何,最终我在对类似 question 的答案的评论中找到了我的困境的答案。 ,作者亲切地写了一个blog post关于他是如何解决这个问题的。

基本上我用过jquery globalize script并将文化设置为 en-GB。我应该提一下,在他的博客中他没有提到将位放在指定文化的位置,所以我只是在页面中的脚本标签中插入了对全局化脚本的引用:

<script src="@Url.Content("~/Scripts/globalize.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/globalize.culture.en-GB.js")" type="text/javascript"></script>
<script type="text/javascript">
Globalize.culture("en-GB");
$.validator.methods.date = function (value, element) {
return this.optional(element) || Globalize.parseDate(value);
};
</script>

关于c# - 使用 ComponentModel.DataAnnotations 对英国日期格式进行 MVC3 验证(也使用 jquery ui datepicker),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10137765/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com