Web API无法反序列化Javascript Date.toISOString()?

时间:2014-04-10 03:50:57

标签: c# javascript json datetime deserialization

我正在寻找一种方法将javascript日期传递给.NET web api控制器而无需在客户端上安装另一个库...

我期待javascript日期反序列化为.NET DateTime。

var date = new Date(); 
post({currentDate: date.toISOString()}); 

以DateTime.Min的身份到达服务器(表示无法反序列化)。

以下是通过网络发送内容的示例,但ApiController无法使用正确的日期创建DateTime ...

请求:

{"Date":"2014-04-16T17:03:03.383Z"}

C#:

    [Serializable]
    public class MyObj 
    {
         public DateTime Date { get; set; }
    }

    public class MyController : ApiController
    {
        public HttpResponseMessage Post(MyObj dd)
        {
            // dd's Date property equals DateTime.Min rather than the correct date...
            return null;
        }

    }
}

2 个答案:

答案 0 :(得分:0)

删除[Serializable]属性。

答案 1 :(得分:-1)

我认为你应该从客户端推动滴答声。然后服务器端将从滴答中获取日期。 示例:

javascipt的:

var date = new Date(); 
post({ticks: date.getTime()}); 

.NET:

DateTime date = new DateTime(ticks);