gpt4 book ai didi

ASP.NET MVC5 以错误的格式存储日期

转载 作者:行者123 更新时间:2023-12-01 19:15:56 25 4
gpt4 key购买 nike

过去几天,我很难说服 MVC5 项目按照我的意愿使用日期。经过大量的谷歌搜索后,我尝试了多次尝试使其正常工作,但没有成功。

问题是这样的:

我需要以 dd.MM.yyyy 格式(即 2015 年 7 月 15 日)在网页上显示和编辑日期。为了进行编辑,我还需要使用 jquery ui datepicker。这里的事情是,我已经能够成功地将日期选择器设置为以请求的格式显示日期,而且 jquery 验证现在可以正确验证给定格式的日期。至于用户界面到目前为止还不错。当我单击提交按钮时,问题立即出现 - 有一条错误消息,例如:

值“15.07.2015”对于开始日期无效。

经过简短的调查,我发现当日期传递到服务器时,它已经切换了格式 - 而不是 dd.MM.yyyy,日期被视为 MM.dd.yyyy。换句话说,只有当日期的日期部分大于 12 时才会弹出错误。

以下是我的代码中的一些亮点:

在我的日期模型中,我有这个:

[Required]
[Display(Name = "Start Date")]
[DataType(DataType.Date)]
[UIHint("Date")]
[DisplayFormat(DataFormatString = "{0:dd.MM.yyyy}", ApplyFormatInEditMode = true)]
public DateTime DateStarts;

我相信这是我需要做的一切,使日期以指定的格式显示,并强制用户以正确的格式填充文本框。

如 [UIHint("Date")] 中给出的,我有自己的模板用于渲染用于编辑日期的文本框。该模板的实现如下:

@model Nullable<DateTime>

@{

DateTime dt = DateTime.Now;

if (Model != null)
{
dt = (System.DateTime)Model;
}

@Html.TextBox("", dt.ToString("dd.MM.yyyy"), new { @class = "form-control datecontrol", type = "text", data_val_date = "Field must have format dd.MM.yyyy" })
<i class="fa fa-calendar form-control-feedback lowerzindex"></i>

}

jquery 日期选择器具有以下实现:

 $('.datecontrol').datepicker({
onClose: function () { $(this).valid(); },
minDate: "-1M",
dateFormat: "dd.mm.yy",
});

因此,即使日期选择器也知道格式应该是什么样子。

最后一个组件是通过 jquery.validation 进行验证:

 $.validator.addMethod(
'date',
function (value, element, params) {
if (this.optional(element)) {
return true;
};
var result = false;
try {
$.datepicker.parseDate('dd.mm.yy', value);
result = true;
} catch (err) {
result = false;
}
return result;
},
''
);

我知道日期以某种文化中立的格式传递到服务器,但我认为当我用请求的格式在许多地方装饰代码时,这将确保正确地转换为文化中立的格式。还是我还漏掉了其他东西?

谢谢

最佳答案

您的问题在于您没有设置正确的Culture为您的应用程序。您的请求最终在具有 month-day-year 的文化下执行订单(可能在 en-US 下)会给您带来问题。

最简单的解决方案是设置实际具有 day-month-year 的区域性订购和 .作为 web.config 中的日期分隔符,例如:

<configuration>
<system.web>
<globalization uiCulture="de-DE" culture="de-DE" />
...

https://msdn.microsoft.com/en-us/library/bz9tc508%28v=vs.140%29.aspx

MVC 在解析发布的数据并将其绑定(bind)到模型/参数时使用当前区域性。建议在整个范围内使用相同的日期分隔符 - html、客户端、javascript、服务器文化等

关于ASP.NET MVC5 以错误的格式存储日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30138825/

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