【发布时间】: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