2009-06-21 1 views
4

現在、私は素晴らしい方法を使ってJSON結果を生成する非常に簡単なツールである素晴らしいLinq 2 Json.net(by newtonsoft)を使用しています。(より良い方法)ASP.net MVC FrameworkにJSON結果をどのように入れますか?

しかし、いくつかのプロジェクトを終了した後、コントローラでJSON結果を生成する必要がありますか?つまり、.NET MVCフレームワークでは、ViewResultの1つとしてJSONResultが提供されています。しかし、コントローラは結果がどのように生成されるのか気にする必要がありますか?または、表示するデータを「提供する」だけで、必要な出力(および書式設定)を生成するビューの仕事でなければなりませんか?

最後に、コントローラーが表示/出力の問題に関してあまりにも多くのパターンやメソッドを使用する可能性があるので、コントローラーで "ViewData"を使用すると良い考えではないと聞きましたか?

答えて

1

JSONは単にViewDataの一種であるため、ViewData辞書を使用してViewページと通信するのと同じように、JSONの出力をControllerで正当化すると思います。

実際の表示ページは既にレンダリングされているか、クライアント側の言語で処理されています。 1つの欠点はありますが、JSON出力コントローラはビ​​ューにかなり依存しています。はい、JSONを通信チャネルとして受け入れる他のものにビューを変更することはできますが、クライアントを変更する場合は、例えば、他のチャンネルを通信(直接TCP接続やSOAPアプリケーションなど)として使用するデスクトップアプリケーションには、コントローラがJSON用に作られているものとします。 (本当にあなたは翻訳を行うためのアダプタを作ることができます)。

コントローラを変更しないで他のプラットフォームを計画していない限り、JSONレンダリングはコントローラでOKです。

0

私は通常、JsonResultsの結果をコントローラ自体に設定します。私はModel/DAL/BLLまでデータ/ ienumerableを要求通りにフィルタリングすることができると感じますが、コントローラ/ビューfrob &を返します。 JsonResultの場合、フレームワークはview/encodingピースを処理します。私はフォーマットされたテキスト(HTMLの主に)出力のためのビューを予約します。 JSONとFile/Imageの応答には、組み込みのhandler/resultを使用します。 XML出力は、どちらの方法でも実行できます。

+0

私はビューがフォーマットされた出力であることに同意しますが、JSONはフォーマット出力のタイプではありませんか?コントローラのJSON出力が実際に2つのことを行い、入力とフォーマット出力を同時に処理すると聞こえます。 – xandy

1

JSON出力は、ほとんどのサーバー側言語ではかなり簡単ですが、テンプレートを使用して複雑にする理由はありませんでした。

可能な限り、発生するオーバーヘッドの量はおそらく無駄です。ほとんどの場合、レンダリングテンプレートによってサブシステム全体が起動されます。

JSON(とAJAXの回答全般)についての私の考えは、サーバから大量のオーバーヘッドを削ることができます。

+0

これはRails特有のノートです... コンテンツネゴシエーションでは、JSONレスポンスを作成するためにテンプレート言語を使用することができます。 最終的には、これらのテンプレートは死んでしまう。これは、テンプレートがJSON出力を生成するために使用された他の言語にも当てはまると思います。 –

関連する問題