Pat*_*ick 8 c# asp.net-mvc jquery datepicker
我需要使用datepicker在SQL-Server DB中存储日期格式"29-12-2014",但我收到消息字段XXX必须是日期.
我的最后一次尝试是正则表达:
型号#1:
[RegularExpression(@"([3][0,1]|[0-2]\d)-([1][0-2]|[0]\d)-(\d\d\d\d)", ErrorMessage = "Valor inválido.")]
public Nullable<DateTime> ETD { get; set; }
Run Code Online (Sandbox Code Playgroud)
型号#2:
[DataType(DataType.DateTime)]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd-MM-yyyy}")]
public Nullable<DateTime> ETD { get; set; }
Run Code Online (Sandbox Code Playgroud)
视图:
<div class="editor-field">
@Html.TextBoxFor(model => model.ETD)
@Html.ValidationMessageFor(model => model.ETD)
</div>
Run Code Online (Sandbox Code Playgroud)
jQuery的:
$(function () {
$("#ETD").datepicker();
});
Run Code Online (Sandbox Code Playgroud)
我总是收到消息"字段ETD必须是约会".
任何的想法?
谢谢.
据我所知,格式'dd-MM-yyyy'就是问题所在.jquery不显眼的验证试图实例化一个新的Date(strVal)对象,它不知道如何处理字符串'29 -12-2014'.
请参阅Chrome中的不显眼验证,不会使用dd/mm/yyyy进行验证
magritte回答说,使用jQuery Globalize库重新定义不显眼的验证器的日期方法,用所需的格式字符串进行解析应解决问题:
$.validator.methods.date = function (value, element) {
return this.optional(element) || Globalize.parseDate(value, "dd-MM-yyyy", "en");
}
Run Code Online (Sandbox Code Playgroud)
更新
我在本地重新创建了您的问题,并且能够在未安装Globalization库时复制"在表单发布之前未触发的必需字段验证"问题.安装并加载库后,前端按预期工作,不显眼的验证接受修改后的dd-MM-yyyy日期.
可以使用NuGet包管理器和以下包安装该库:http://www.nuget.org/packages/jquery-globalize/.然后,您需要更新您的html以包含globalize.js脚本.
后端是另一个故事,它将依赖于您本地机器的全球化配置文件.我假设您运行的是非en/us机器,此格式可能会解析?我的机器是英语/我们并没有原生解析修改后的日期格式,但是使用下面的命令,我成功获得了一个有效的日期时间:
DateTime.ParseExact(Request.Form["ETD"], "dd-MM-yyyy", System.Globalization.CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2679 次 |
最近记录: |