2012-03-26 9 views
2

upshot.jsはどのようにDateTimeオブジェクトを処理しますか?Upshot MVC 4の日付、ノックアウトバインディングの処理

「通常の」文字列を作成し、実際のJS日付オブジェクトを作成していないようです。 JSONの日付の書式設定やMVCに関連

すべての問題は、すでにここで説明されていますHandling dates with Asp.Net MVC and KnockoutJS

はそうでもJSON.NetにMVCのデフォルトのJSONのフォーマッタを変更した後にそのそれでも日付への自動変換をしていません。 残念ながら、内部的にDateオブジェクトを作成するには、すべてのバインディングを「手作業」で行う必要があります。新しい日付(文字列)へのJSON.Netフォーマットの日付では、コンストラクターが日付の文字列を完璧に処理するためには大丈夫です。

ノックアウト用のバインディングにあるすべての異なる値タイプを処理するための「一般的な」libがありますか?

+0

JSON.netでフォーマットされた別の問題が見つかりました。 置き換えられたJSON.Netフォーマッタを使用すると、日付がうまくいき、JSの日付オブジェクトに簡単に変換できます。 エンティティをサーバーに送り返したい場合は失敗します。何らかの形で、フォーマッタがデフォルトのjsonフォーマッタを置き換えた場合、desrialisationが機能しないようです... – Obiwan007

答えて

3

jsonに日付の既定の書式がないため、これは古い話です。また、/Date(.....)/はネット(ネットだけではなく、asp.net)によってふり形式はすべての最新ブラウザで許可されたJSON形式のカスタマイズにも取り扱いが容易ではありません。

  1. 最初の問題は、/Date()./)/形式がブラウザのjson構文解析関数によって理解されないということです。これは、Jsonの解析をカスタマイズすることで簡単に解決されます。ネットにはたくさんのパッチがあります。
  2. サーバーに日付を返信する際にも同じ問題があります。しかしこの場合、JSON.stringifyメソッドはjsonのシリアル化をカスタマイズする関数を受け入れるが、各日付を文字列 "/Date(.....)/"に変換する関数を渡すと、パッチを適用するのは非常に難しい。 ..文字列化関数ADD furteh \を "\/Date(.....)\ /"に変換します。つまり、\ char ....をエスケープしますが、このように変換された文字列は、ドットネット。反対側では、日付を/Date(.....)/...noに変換するとエスケープ文字が追加されるので、この場合も間違ったエンコーディングが発生します。
  3. また、上記の問題を解決した場合、ラウンドトリップサーバー/クライアント/サーバーの後に日付が返されます。具体的には、タイムラインのオフセットは元の日付から差し引かれます...これは、.NETとブラウザがタイムラインを処理するさまざまな方法によるものです。
  4. upshotはブラウザのJSON.stringify関数を呼び出しているだけなので、日付をカスタマイズする余地はありません。あなたがMVCコントロールツールキットプロジェクトのclient blocks機能を使用する場合

あなたが少数で来て、次のリリースでは、自動的に問題1と2を扱う「強化」のノックアウトを使用することができます(私はのコーディネーターをしています)私は問題3の自動処理も追加します。 ...これはアップショットの問題を解決しません...アップショットで使用されていないknokoutマッピングプラグインのマッピング関数をバックにしてからサーバーと...アップショットが直接JSON.stringifyを呼び出すと...データをポストするときにjsonのカスタムフォーマットを扱うupshotを変更する以外に、問題を解決する方法がないようです。

クライアントブロックのアップコムリリースでは、適切な日付を処理するアップショットに「類似」するジョブを実行するUpdateManagerクラスを提供します...しかし、これは決して異なる更新戦略を使用するので決してアップショットの代わりにはなりません...これは単なる選択肢ではなく、代用品ではありません。 最終版の最終版では、データのjsonフォーマットをカスタマイズする可能性があることを願っています。

+0

あなたの返信はThxです。 1.問題は何とか簡単に解ける - 私はちょうどJSON.Netのlibを使って日付をISO形式で作成する(/ Date *ではない)。したがって、新しいDate(文字列)は完璧に動作しています。 2.あなたが指摘したように送り返しが問題です。私は現在、クライアントがサーバーにポストバックしているものは何も持っていません。私はいつかバイリンガルでそれをチェックします:) あなたのライブを楽しみにしています。現時点では、これまでにあまりにも多くの問題が存在するため、upshot/SPAは実際の選択肢ではありません。おそらく、ノックアウトのモデルビルダを使ってモデルを作成する際の直接的なアプローチを試みるでしょう。 – Obiwan007

+0

Scott Hanselmanのこの記事を参照してください。 http://www.hanselman.com/blog/OnTheNightmareThatIsJSONDatesPlusJSONNETAndASPNETWebAPI.aspx。投稿の終わりに、最終リリースではJSON.netをWebApiで出荷することを約束しています...すべてのjsとdllに "正規化"があります...一緒に動作します –

+0

my lib cedeplexで公開されています:http://mvccontrolstoolkit.codeplex.com/このリンクでは、コードサンプルやチュートリアルの参考になります。 Th公式文書は、次の日に更新されます –