【问题标题】:MVC Model Ajax Post with DateTime Property Null带有 DateTime 属性 Null 的 MVC 模型 Ajax 发布
【发布时间】:2017-09-06 04:25:44
【问题描述】:

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

请求负载中的值

DevelopmentPlan_CompletionDate:"/Date(1491796800000)/"

模型属性

 public DateTime? DevelopmentPlan_CompletionDate { get; set; }

似乎/Date(1491796800000)/ 格式正在造成问题,我正在从后端共享点列表中读取日期时间值,值是4/18/2017 4:00:00 AM。现在在客户端我正在这样做

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

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

【问题讨论】:

  • 显示相关代码,包括 ajax 以及如何在脚本中设置属性 - 并参考 this question/answer
  • 更新一些发现
  • 不要JSON.stringify(..)它 - 只是sessionStorage.setItem('DataModel', datamodel));

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


【解决方案1】:

这是因为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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-13
    • 2018-03-14
    • 2015-10-02
    相关资源
    最近更新 更多