use*_*329 12 asp.net-mvc asp.net-mvc-3 asp.net-mvc-4
我遇到了一个问题,我遇到了日期时间字段的客户端验证问题.当我尝试提交时,它一直告诉我日期无效(2013年7月27日).但是,如果我将日期转换为美国格式(2013年7月27日).
我的观点模型如下,
[DataType(DataType.Date), DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
public DateTime? AuditDate { get; set; }
Run Code Online (Sandbox Code Playgroud)
的index.html
@Html.TextBoxFor(m => m.AuditDate)
Run Code Online (Sandbox Code Playgroud)
我已经更新了我的web.config
<globalization culture="en-AU" uiCulture="en-AU" />
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
谢谢
use*_*329 27
有人为我排序了这个,这与客户端Jquery验证有关.再次感谢渐渐失败..你摇滚.. MVC 4约会文化问题?
这是我用过的那个链接的信息......
问题是jQuery验证在解析日期时没有考虑文化.如果关闭客户端验证,则在知道文化的服务器上解析日期就好了.
修复是覆盖日期的jQuery验证,并包含一个额外的jQuery全球化插件.你可以在这里找到globalize插件.您也可以使用Nuget Package Manager轻松下载插件.我刚打开包管理器,选择左侧的在线选项卡,在搜索中输入"globalize",这是第一个结果.安装完成后,我将这两个文件包括在内:
globalize.js
globalize.culture.en-AU.js
Run Code Online (Sandbox Code Playgroud)
您可以使用脚本标记直接包含它们,也可以将它们放在一个包中,也许与其他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>
Run Code Online (Sandbox Code Playgroud)
luk*_*yer 10
由于jquery.validate.unobtrusive.min.js中的MVC错误(即使在MVC 5中),它不会以任何方式接受日期/日期时间格式,因此可能会发生客户端验证问题.不幸的是你必须手动解决它.
我最终的解决方案:
你必须包括:
@Scripts.Render("~/Scripts/jquery-3.1.1.js")
@Scripts.Render("~/Scripts/jquery.validate.min.js")
@Scripts.Render("~/Scripts/jquery.validate.unobtrusive.min.js")
@Scripts.Render("~/Scripts/moment.js")
Run Code Online (Sandbox Code Playgroud)
您可以使用以下命令安装moment.js:
Install-Package Moment.js
Run Code Online (Sandbox Code Playgroud)
然后你最终可以为日期格式解析器添加修复:
$(function () {
$.validator.methods.date = function (value, element) {
return this.optional(element) || moment(value, "DD.MM.YYYY", true).isValid();
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22753 次 |
| 最近记录: |