具有DateTime属性的MVC模型Ajax发布空

时间:2017-04-11 00:20:44

标签: c# asp.net ajax asp.net-mvc asp.net-mvc-4

我正在使用模型进行ajax发布,一切正常,除了一个日期时间属性,我可以在浏览器的网络选项卡中看到以下值在请求有效负载中传递,但是当我将调试器放在服务器端操作方法时,该日期时间属性显示为null。

请求有效负载中的值

DevelopmentPlan_CompletionDate:"/Date(1491796800000)/"

模型属性

 public DateTime? DevelopmentPlan_CompletionDate { get; set; }

似乎/Date(1491796800000)/格式正在创建问题,我正在从后端Sharepoint列表中读取DateTime值,值为4/18/2017 4:00:00 AM。现在在客户端我正在这样做

   var dataModel = @Html.Raw(Json.Encode(Model));
   sessionStorage.setItem('DataModel', JSON.stringify(dataModel));

完成上述操作后,我的datetime属性更改为"/Date(1491796800000)/",这在使用此值执行ajax发布时会导致问题

1 个答案:

答案 0 :(得分:0)

因为Json.Encode()DateTime转换为此格式/Date(1491796800000)/,您应该使用Newtonsoft转换为Json

var dataModel = @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model))

这会将DateTime转换为2017-04-11T08:55:24.659262+05:00这种DateTime可以理解的格式,因此它会转换为Json格式,因此无需使用JSON.stringify转换为Json

sessionStorage.setItem('DataModel', dataModel);