这是一个老故事,因为 json 没有默认的日期格式。此外,.Net(.Net 不仅仅是 asp.net)伪装的格式 /Date(.....)/ 也不容易处理所有现代浏览器都允许的 json 自定义:
- 第一个问题是浏览器json解析函数不理解/Date(.....)/格式。这可以通过自定义 Json 解析轻松解决。网上有很多补丁。
- 将日期发送回服务器时,您会遇到同样的问题。但是在这种情况下,很难修补,因为虽然 JSON.stringify 方法接受一个自定义 json 序列化的函数,但如果您传递一个将每个日期转换为字符串“/Date(.....)/”的函数。 ..然后 stringify 函数 ADD furteh \ 并将其转换为:“\/Date(.....)\/”,即它转义了 \ char ....但是以这种方式转换的字符串不被理解点网。另一方面,如果您将日期转换为 /Date(.....)/...没有添加转义字符,那么...在这种情况下,您也会得到错误的编码。
- 此外,如果您解决了上述问题......在往返服务器/客户端/服务器之后,日期返回更改。具体来说,时间线偏移量是从原始日期中减去的……这是由于 .Net 和浏览器处理时间线的方式不同。
- 结果只是调用浏览器 JSON.stringify 函数......所以它没有给你自定义日期的空间。
如果您使用 Mvc Controls Toolkit 项目的客户端块功能(我是该项目的协调员),您可以使用自动处理问题 1 和 2 的“增强”淘汰赛。在几天后的下一个版本中,我还将添加问题3的自动处理。但是...这不会解决结果的问题...因为我挂钩了不被结果用于将数据发送回服务器的knokout映射插件的映射功能...和因为 upshot 直接调用 JSON.stringify ......似乎没有办法解决这个问题......除了在发布数据时修改 upshot 以处理 json 自定义格式。
在客户端块的 upcomig 版本中,我将提供一个 UpdateManager 类,它与处理正确日期的结果“相似”的工作......但是这永远不会替代结果,因为它使用完全不同的更新策略......和只是一个选项 MORE 不是替代品。所以我希望在 upshot 的最终版本中能够自定义数据的 json 格式。