. net MVC UK日期格式无法验证,尽管区域性为en-GB

本文关键字:区域性 en-GB 验证 UK MVC 日期 格式 net | 更新日期: 2023-09-27 18:09:21

我在MVC中有一系列的web表单。在最近对网站进行了一些更新之后,DateTime字段验证假设日期是美国格式,因此大于12的天数验证失败,尽管我已经将编辑日期格式、验证代码和区域性指定为en-GB。尝试了不同的浏览器,所有的语言都设置为英语(英国),在Firefox, Chrome和Edge中验证失败,只在IE中有效。尝试了各种其他建议,包括ModelBinding,但似乎都不起作用。

在课堂上:

[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
在web . config中

:

<globalization culture="en-GB" uiCulture="en-GB" requestEncoding="utf-8" responseEncoding="utf-8" enableClientBasedCulture="false" />
在global.asax:

CultureInfo newCulture = (CultureInfo)Thread.CurrentThread.CurrentCulture.Clone();
newCulture.DateTimeFormat.ShortDatePattern = "dd/MM/yyyy";
newCulture.DateTimeFormat.DateSeparator = "/";
Thread.CurrentThread.CurrentCulture = newCulture;
Thread.CurrentThread.CurrentUICulture = System.Globalization.CultureInfo.GetCultureInfo("en-GB");
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-GB");
在jquery.validate.js:

date: function (value, element) {
        $.culture = Globalize.culture("en-GB");
        var date = Globalize.parseDate(value, "dd/MM/yyyy", "en-GB");
        return this.optional(element) || 
                       !/Invalid|NaN/.test(new Date(date).toString());
    }

还有其他建议吗?

. net MVC UK日期格式无法验证,尽管区域性为en-GB

我得到了这与MVC 5正确工作。这里需要做两个修改:

  1. 添加一个模型绑定器,因为默认的绑定器不考虑CurrentUICulture。我这样做时删除了客户端验证,只是为了测试它。默认情况下不这样做的原因是你可能会在URL中使用日期,尽管我认为如果我这样做了,我会希望按照yyyy-mm-dd行格式化URL。
  2. 修改客户验证以考虑英国日期。我不确定你的jquery.validate.js代码会工作。我也有一点麻烦,这也是,所以最后我安装了nuget包jquery . validate . additionalmethods和代码使用它。