gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 06:04:10 25 4
gpt4 key购买 nike

我正在使用 MVC 4,想知道日期时间文化信息中是否存在错误?

我正在尝试让澳大利亚日期正常工作(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 中设置区域性应该可以做到这一点,但这应该会强制它采用这种格式。

更新

好的,所以上面的答案并没有真正解决问题,尽管如果您确实想更改日期最初显示的格式,这一点很重要。需要注意的是,DisplayFormat 属性不是由 TextBoxFor 帮助程序获取的,而是由 EditorFor 帮助程序获取的。

无论如何,还是要找到真正的解决方案。问题是 jQuery 验证在解析日期时没有考虑区域性。如果您关闭客户端验证,则在了解文化的服务器上可以很好地解析日期。

修复方法是覆盖日期的 jQuery 验证并包含一个额外的 jQuery 全局化插件。你可以找到全局化插件here 。您还可以使用 Nuget 包管理器轻松下载该插件。我刚刚打开包管理器,选择左侧的“Online”选项卡,然后在搜索中输入“globalize”,这是第一个结果。安装完成后,我包含了这两个文件:

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我只是想针对您的问题提供更多解释。

关于asp.net-mvc-4 - MVC 4 日期文化问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18548816/

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