我正在使用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中设置区域性,但这应将其强制为该格式。
更新
好的,因此上述答案并不能真正解决问题,但是如果您确实想更改日期的初始显示格式非常重要。一个重要的注意事项是,该DisplayFormat
属性不是由TextBoxFor
辅助程序拾取的,而是由辅助程序拾取的EditorFor
。
无论如何,真正的解决方案。问题是jQuery验证无法解析日期时的区域性。如果关闭客户端验证,则可以在了解区域性的服务器上解析日期。
解决方法是覆盖日期的jQuery验证,并包括一个附加的jQuery全球化插件。您可以在此处找到全球化插件。您也可以使用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验证和MVC3。如何更改日期格式我也只想针对您的问题提供更多说明。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句