使用MVC5& jquery,我试图用json ecoding处理已知的日期时间转换问题。 在我看来,我正在使用以下行在视图上创建一个json对象:
@Html.Hidden("boxJson", Html.Raw(System.Web.Helpers.Json.Encode(item)));
一切都很有效,因为这个'item'im编码是一个包含一些内部类的复杂对象,但编码工作正常,除了日期时间。我已经设法处理随附的字符串(例如:/ Date(1078729200000)/),用于客户端的日期和一些客户端功能。但无法处理此Encode功能对日期的UTC问题。
[对于那些不熟悉它的人,Encode函数处理来自DB的Datetime,其中datetime的属性 kind 设置为Unspecified,自动为UTC时间。]
我知道我可能会做一些工作并通过某些客户端函数操作json中的日期,但我使用整个json对象将其发送回服务器而不会干扰。
var jsonObject = $('#boxJson').val();
$.ajax({
url: 'some url\Func',
type: 'POST',
data: jsonObject ,
contentType: "application/json; charset=utf-8",
[HttpPost]
public JsonResult Func(Class jsonObject ){
//jsonObject comes with all class and inner class members BUT dates are in UTC timezone
...
}
,再次正常工作,但UTC日期时间除外。
我试过用:
@Html.Hidden("boxJson" , Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(item)));
修复了日期问题,但无法处理复杂的“项目”对象。
基本上,我正在寻找一种方法来使用一些处理UTC日期时间问题的方法来覆盖Json.Encode方法。 或任何其他解决方法也会有所帮助。
更新
我的复杂课程'item':
public class ScheduleResult : IComparable<ScheduleResult>
{
public bool Succeeded { get; set; }
public int Position { get; set; }
public ServiceRequest Request { get; set; }
public ProviderResource AssignedResource { get; set; }
public DateTime Start { get; set; }
public DateTime Finish { get; set; }
public ScheduleEvaluation ScheduleEvaluation { get; set; }
public int Ranking { get; set; }
}
ServiceRequest,ProviderResource,ScheduleEvaluation也是类。
答案 0 :(得分:0)
好吧,经过一些更多的编码,我认为我使用Json.NET的问题是我拥有的派生类,在我的例子中:ServiceRequest,ProviderResource就是这种类。 所以Json.NET需要类的属性[DataContract],并且每个类属性的[DataMemeber]都能够序列化类。