upshot.js 如何处理 DateTime 对象?
看起来它只是创建“普通”字符串,而不是创建真正的 JS 日期对象。
所有与 JSON 日期格式化和 MVC 相关的问题都已在此处讨论:使用 Asp.Net MVC 和 KnockoutJS 处理日期 https://stackoverflow.com/questions/8735617/handling-dates-with-asp-net-mvc-and-knockoutjs
因此,即使在将 MVC 默认 JSON 格式化程序更改为 JSON.Net 之后,它仍然没有执行迄今为止的自动转换。
不幸的是,所有绑定都必须“手动”完成才能在内部创建 Date 对象。使用 JSON.Net 格式化日期到 new Date(string) 方法似乎可以正常工作,因为构造函数可以完美处理日期格式字符串。
是否有一个“通用”库可用于处理淘汰绑定中的所有不同值类型?
这是一个老故事了,因为 json 没有默认的日期格式。此外,.Net(.Net 不仅仅是 asp.net)假装的 /Date(.....)/ 格式也不容易用所有现代浏览器允许的 json 自定义来处理:
- 第一个问题是浏览器json解析功能无法理解/Date(.....)/格式。通过自定义Json解析就可以轻松解决这个问题。网上有很多补丁。
- 将日期发送回服务器时遇到同样的问题。然而,在这种情况下,修补起来非常困难,因为虽然 JSON.stringify 方法接受自定义 json 序列化的函数,但如果您传递将每个日期转换为字符串“/Date(.....)/”的函数。 ..然后 stringify 函数 ADD 进一步 \ 并将其转换为:“\/Date(.....)\/”,即它转义 \ 字符....但是以这种方式转换的字符串不能被理解点网。另一方面,如果您将日期转换为 /Date(.....)/...则不会添加转义字符,所以...在这种情况下您也会得到错误的编码。
- 另外,如果您解决上述问题...在往返服务器/客户端/服务器之后,返回的日期会发生变化。具体来说,时间轴偏移量是从原始日期中减去的......这是由于 .Net 和浏览器处理时间轴的方式不同所致。
- 结果只是调用浏览器 JSON.stringify 函数...所以它没有给您留下自定义日期的空间。
如果你使用客户端块 http://mvccontrolstoolkit.codeplex.com/wikipage?title=Client%20BlocksMvc Controls Toolkit 项目的功能(我是该项目的协调员)您可以使用“增强”的淘汰赛来自动处理问题 1 和 2。在几天后发布的下一个版本中,我还将添加问题 3 的自动处理。
但是...这不会解决 upshot 的问题...因为我挂接了 knokout 映射插件的映射函数,而 upshot 不使用这些函数将数据发送回服务器...并且因为 upshot 直接调用 JSON.stringify ...似乎没有办法解决这个问题...除了在发布数据时修改结果以处理 json 自定义格式之外。
在即将发布的客户端块中,我将提供一个 UpdateManager 类,该类执行与处理正确日期的结果“类似”的工作...但是,这永远不会替代结果,因为它使用完全不同的更新策略...并且只是一个选择而不是替代品。
所以我希望在最终发布的 upshot 中能够自定义数据的 json 格式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)