【问题标题】:Day and month reverse during MVC model bindingMVC模型绑定期间的日月反转
【发布时间】:2016-03-06 17:37:14
【问题描述】:

我有一个奇怪的问题似乎只发生在我的 ASP MVC3 应用程序的测试 W2k12 服务器中。

我的开发环境是MVC3/.NET4.0/Win7/VS2010。部署服务器是运行 .NET 4.5 的 W2k12

在我的模型中,我的日期时间字段一般定义为:

[DisplayName("From (dd/mm/yyyy)")]
[Required]
[DataType(DataType.Date)]
public DateTime? InputDateTime { get; set; }

在我看来,它只是将日期呈现为文本框中的字符串(即没有日期选择器)

在我的开发框(Win7专业版)中,如果我输入日期和月份only(例如:dd/mm),然后点击Save/Submit按钮,它会调用JQuery .serialize () 方法并传递给控制器​​的 AJAX 方法。它以 dd/mm/yyyy 格式正确映射到日期字段(并自动添加当前年份)。它还可以作为日期字段保存到数据库中。

需要注意的是,表单数据是序列化的,而不是作为 Json 字符串传递的(不是字符串化的),使用 $.ajax (jQuery 1.7.x)

如果我在文本框中输入“dd/mm/yyyy”,它也会正确保存。

但是,我的问题是在程序部署到 W2K12 服务器(在 .NET 4.5 下运行)之后开始的:

如果我只键入 dd/mm(例如 10/04),则日期和月份交换并保存为 mm/dd(加上当前年份,因此 mm/dd/yyyy)。 jQyery.serializer 上不会发生“交换”,但它只会作为字符串传递给 MVC 控制器。

如果我输入完整的 dd/mm/yyyy,月份和日期不会交换

我检查了 W2k12 上的区域和日期格式(短/长日期),它们看起来都不错(澳大利亚地区,dd/mm/yyyy 格式)并且与我的 W7 框相同。

有人可以解释一下吗?请询问您是否需要更多信息。

附言以下内容已在 web.config 文件中:

<globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="en-AU" uiCulture="en-AU" />

【问题讨论】:

  • 我有一个非常相似的问题,它在本地运行良好,但部署到 Azure 后出现问题。

标签: jquery asp.net-mvc-3


【解决方案1】:

我刚刚通过添加解决了我的类似问题

<globalization uiCulture="en" culture="en-GB"/>

进入 web.config 中的 system.web 节点

【讨论】:

  • 但我已经有了类似的想法(参考我的问题),同样的问题仍然发生。
  • @WML 我发现它已针对桌面浏览器修复。但在 iOS 设备等移动设备上时,问题仍然存在
猜你喜欢
  • 2014-04-20
  • 2013-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多