jsonには日付のデフォルト形式がないため、これは古い話です。さらに、.Net(asp.netだけでなく.Net)のふりをした/ Date(.....)/の形式は、最新のすべてのブラウザーで許可されているjsonのカスタマイズでも簡単に処理できません。
- 最初の問題は、/ Date(.....)/形式がブラウザーのjson解析関数によって理解されないことです。これは、Json解析をカスタマイズすることで簡単に解決できます。ネット上にはたくさんのパッチがあります。
- 日付をサーバーに送り返すときにも同じ問題が発生します。ただし、この場合、JSON.stringifyメソッドはjsonシリアル化をカスタマイズする関数を受け入れる一方で、各日付を文字列 "/ Date(.....)/"に変換する関数を渡すと、パッチを適用するのが非常に困難になります。 ..次に、stringify関数ADD furteh \を変換して、「\ / Date(.....)\ /」に変換します。つまり、\ char ....をエスケープしますが、この方法で変換された文字列は、 dotnet。一方、日付を/ Date(.....)/ ...に変換すると、エスケープ文字が追加されないため、この場合も間違ったエンコーディングが取得されます。
- また、上記の問題を解決した場合...ラウンドトリップサーバー/クライアント/サーバーの後、日付が変更されて返されます。具体的には、タイムラインオフセットが元の日付から差し引かれます...これは、.Netとブラウザがタイムラインを処理する方法が異なるためです。
- upshotはブラウザのJSON.stringify関数を呼び出すだけなので、日付をカスタマイズする余地はありません。
Mvc Controls Toolkitプロジェクト(私はのコーディネーター)のクライアントブロック機能を使用する場合は、問題1と2を自動的に処理する「拡張」ノックアウトを使用できます。数日以内にリリースされる次のリリースでも追加します問題3の自動処理。ただし...これはupshotの問題を解決しません...upshotがサーバーにデータを送り返すためにupshotで使用されないknokoutマッピングプラグインのマッピング関数をフックしたためです...そしてupshotはJSON.stringifyを直接呼び出すため、問題を修正する方法はないようです...データを投稿するときにjsonカスタム形式を処理するようにupshotを変更する以外に。
クライアントブロックのupcomigリリースでは、適切な日付を処理するupshotと「同様の」ジョブを実行するUpdateManagerクラスを提供します...ただし、これはまったく異なる更新戦略を使用するため、upshotの代わりにはなりません...そして単なるオプションであり、代替ではありません。したがって、upshotの最終リリースで、データのjsonフォーマットをカスタマイズできるようになることを願っています。