从Javascript发布到ASP.NET中的Controller的DateTime结果为null(01/01/0001)

时间:2010-06-10 20:25:08

标签: javascript asp.net-mvc datetime

这让我发疯,类似于this。如果我使用标准表单而没有javascript,则控制器会正确绑定日期时间。但是,当我从表单发布时,它总是绑定为null:

"MyObject.Name": "Test name",
"MyObject.Date": "5/1/2001"

我尝试了几种变体,5-1-2001等,但似乎无法接受它。我可以确认它正在传递给服务器,因为它显示在Request.Form字符串中。我的文化是格里高利,我已经设定了:

Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;

在Application_BeginRequest()中。是什么给了什么?

3 个答案:

答案 0 :(得分:0)

您是否尝试使用前导零,例如“05/01/2001”?

不变文化的标准日期格式包括“MM / dd / yyyy”但不是“M / d / yyyy”,所以如果它有效,那就是原因。理想情况下,您将使用非文化特定格式之一,如“O”往返模式。那么你在服务器上使用什么文化并不重要: http://msdn.microsoft.com/en-us/library/az4se3k1.aspx#Roundtrip

答案 1 :(得分:0)

这可能是本地化问题吗? This博客文章描述了DateTime常见的本地化陷阱。

答案 2 :(得分:0)

DateTime是值类型而不是引用类型,如果不初始化,则需要DateTime.MinValue。 你必须声明为:

DateTime? dt;

或者

Nullable<DateTime> dt;

DateTime?Nullable<DateTime>

的简写