来自IE的日期javascript对象无法自动绑定到ASP.NET MVC中的Datetime

Ser*_*gio 11 javascript asp.net asp.net-mvc jquery

我有一个使用jquery日历来显示事件的站点.我注意到,当在IE(所有版本)中使用系统时,ASP.NET MVC将无法将日期时间绑定到发回正确事件的操作.

事件顺序如下.

  • 日历发布到服务器以获取事件
  • Server ActionMethod接受开始日期和结束日期,自动绑定到datetime对象

在IE以外的每个浏览器中,开始和结束日期都是:

Mon, 10 Jan 2011 00:00:00 GMT
Run Code Online (Sandbox Code Playgroud)

当IE发布日期时,它通过as

Mon, 10 Jan 2011 00:00:00 UTC
Run Code Online (Sandbox Code Playgroud)

然后,ASP.NET MVC 2将无法自动将其绑定到action方法参数.

有没有理由发生这种情况?发布到服务器的代码如下:

data: function (start, end, callback) {
        $.post('/tracker/GetTrackerEvents', { start: start.toUTCString(), end: end.toUTCString() }, function (result) { callback(result); });
    },
Run Code Online (Sandbox Code Playgroud)

Mat*_*ttW 9

我遇到了同样的问题,我使用JavaScript Date()的.toISOString()函数解决了它(而不是做一个字符串替换).

请参阅此处的doc.

DateTime并且DateTimeOffset无论broswer发送它(在我有限的IE,Firefox和Chrome测试中)都将正确处理.

所以,我把日期发送到控制器就像这样(这是我的JS对象):

var dateObject = new Date();
dateObject.toISOString()
Run Code Online (Sandbox Code Playgroud)

并且服务器可以像这样解析数据(.NET - 在控制器中):

DateTimeOffset timeInGMT = DateTime.Parse(dateString).ToUniversalTime(); //for the time in GMT
DateTime timeOnClient = DateTime.Parse(dateString); //for time as it was set on the client.
Run Code Online (Sandbox Code Playgroud)


Mar*_*sen 3

尝试更换

start.toUTCString()
Run Code Online (Sandbox Code Playgroud)

start.toUTCString().replace('UTC','GMT')
Run Code Online (Sandbox Code Playgroud)

看看这是否不能解决您的问题:)