gpt4 book ai didi

c# - jQuery 日期选择器中的日期模型

转载 作者:太空狗 更新时间:2023-10-29 18:25:00 25 4
gpt4 key购买 nike

我需要使用日期选择器在 SQL-Server 数据库中存储日期格式“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; }

模型#2:

[DataType(DataType.DateTime)]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd-MM-yyyy}")]
public Nullable<DateTime> ETD { get; set; }

查看:

<div class="editor-field">
@Html.TextBoxFor(model => model.ETD)
@Html.ValidationMessageFor(model => model.ETD)
</div>

jQuery:

$(function () {
$("#ETD").datepicker();
});

我总是收到消息“字段 ETD 必须是日期。”

有什么想法吗?

谢谢。

最佳答案

我的理解是“dd-MM-yyyy”格式是这里的问题所在。 jquery 非侵入式验证正在尝试实例化一个新的 Date(strVal) 对象,但它不知道如何处理字符串“29-12-2014”。

参见 Unobtrusive validation in Chrome won't validate with dd/mm/yyyy

magritte回答说重新定义不显眼的验证器的日期方法,使用 jQuery Globalize 库来解析所需的格式字符串应该可以解决问题:

$.validator.methods.date = function (value, element) {
return this.optional(element) || Globalize.parseDate(value, "dd-MM-yyyy", "en");
}

更新

我在本地重新创建了您的问题,并且能够在未安装全局化库时复制“必填字段验证在表单发布之前未触发”问题。安装并加载该库后,前端按预期工作,接受修改后的 dd-MM-yyyy 日期的非侵入式验证。

可以使用 NuGet 包管理器和以下包安装该库:http://www.nuget.org/packages/jquery-globalize/ .然后您需要更新您的 html 以包含 globalize.js 脚本。

后端是另一回事,它将依赖于您本地机器的全局化配置文件。我假设您正在运行可能解析此格式的非 en/us 机器?我的机器是 english/us 并且不会本地解析修改后的日期格式,但是使用下面的命令,我成功地得到了一个有效的日期时间:

DateTime.ParseExact(Request.Form["ETD"], "dd-MM-yyyy", System.Globalization.CultureInfo.InvariantCulture);

关于c# - jQuery 日期选择器中的日期模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22082876/

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