asp.net-mvc-4 – MVC 4日期文化问题?

我正在使用MVC 4,我想知道Datetime文化信息中是否有错误

我试图让澳大利亚的日期工作(dd / MM / yyyy),但是它一直说日期格式是错误的,即使放在web.config全球化之后。我以为这是我的代码错误,但即使你开始一个新的项目,它仍然发生。

我开始了一个新的MVC 4 Web应用程序。

将以下内容添加到web.config文件

<globalization culture="en-AU" uiCulture="en-AU" />

然后我将以下内容添加到AccountModels.cs文件中:

[DataType(DataType.DateTime)]
[required(ErrorMessage="Date is required")]
public DateTime? MyDate { get; set; }

然后我将以下内容添加到Register.cshtml文件中:

<li>
    @Html.LabelFor(m => m.MyDate)
    @Html.TextBoxFor(m => m.MyDate)
</li>

运行应用程序,转到注册页面,尝试像26/03/2013这样的日期,它不是有效的格式。

请帮忙。

解决方法

尝试将此属性添加到MyDate属性
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}",ApplyFormatInEditMode = true)]

虽然在web.config中设置文化应该做到这一点,但是它应该强制使用该格式。

UPDATE

好的,所以上面的答案并没有真正解决这个问题,但是如果你想改变最初显示日期的格式很重要。一个重要的注意事项是,DisplayFormat属性不是由TextBoxFor帮助器拾取,而是由EditorFor帮助器拾取。

无论如何,真正的解决方案。问题是解析日期时,jQuery验证不考虑文化。如果您关闭了客户端验证,则在了解文化的服务器上解析日期是正确的。

修复是为了覆盖日期的jQuery验证,并包含一个附加的jQuery全局插件。您可以找到全球化插件here.您也可以使用Nuget软件包管理器轻松下载该插件。我刚刚打开包管理器,选择左侧的“线上”选项卡并键入“全球化”到搜索中,这是第一个结果。一旦你安装它,我包括这两个文件

globalize.js
globalize.culture.en-AU.js

您可以使用脚本标签直接包含它们,也可以将其放置在捆绑包中,也可以使用其他jQuery验证文件

一旦你有了这些,你将需要添加以下脚本来覆盖日期的jQuery验证:

<script type="text/javascript">
    $(function () {
        $.validator.methods.date = function (value,element) {
            Globalize.culture("en-AU");
            // you can alternatively pass the culture to parseDate instead of
            // setting the culture above,like so:
            // parseDate(value,null,"en-AU")
            return this.optional(element) || Globalize.parseDate(value) !== null;
        }
    });
</script>

就是这样,这应该是诀窍。我把这个解决方案归功于这个答案:JQuery Validation and MVC 3. How to change date format我也想提供一些更多的解释与你的问题。

相关文章

项目要求通过网站上传大文件,比如视频文件,通过摸索实现了文件分片来上传,然后后台进行合并。 使用了...
安装新版本的Nginx(vim /etc/yum.repos.d/nginx.repo) [nginx-stable] name=nginx stable repo baseu...
什么是 SignalR&#160;ASP.NET Core ASP.NET Core SignalR 是一种开放源代码库,可简化将实时 web 功...
在Windows下使用Docker,我们选择Docker Desktop这个软件,非常方便。 ## Docker Desktop介绍及安装 Do...
项目开始设计的是运行在windows下,所以一开始采用的是windows服务模式来获取多媒体文件信息,后来要求...
银河麒麟高级服务器操作系统V10是针对企业级关键业务,适应虚拟化、云计算、大数据、工业互联网时代对主...