Railsには、単一のアクションメソッドが適切な形式のデータ(json、xml、データだけ)を簡単に返すようにするための便利なイディオムがあります。クライアントが指定した(または他の要求から推定。それは次のようになります...ASP.NET MVCで複数の形式を返す処理に最適な方法は何ですか
respond_to do |format|
format.html #edit.html.erb
format.json {render :text=> <your json here>), :layout=> false}
format.xml ...
end
フォーマットは、ASP.NET MVCでこれを行うための好ましい方法は何ですか?理想的には、私がしたいですフレームワークはRailsと同じように動作します(例えば、クライアントが指定したフォーマットのために適切にフォーマットされたViewDataを返すことができる、あるいは要求自体から推測されたViewDataを返すことができる)。
Railsでは、各タイプに固有のビューを作成して、基本的にすべてのビューに同じデータを返すことができ、データのフォーマットを正しく処理できるようになります(xmlを構築するビュー、jsonを構築するビュー、別のものはhtmlを構築します)。これはASP.NET MVCで可能ですか?実際には、このモデルは、コントローラーがビューに依存しないデータを返すことを可能にするため、imhoの関心を分離するという目標を維持するのが最善のようです(上記の "format.json ....:layout => false ")コントローラ内でJSON変換を行い、その形式の要求があればそのデータをクライアントに直接返します。
どうにかして...提案、考え、推奨? ASP.NET MVCで
ここで唯一の問題は、Json(あなたのモデル)を返すことはめったにありません。通常、私は人々がJson(またはXML)を特定の方法で構造化することを要求するクライアントでJQueryやExtJsのようなものを使用することを期待しています。 ...そのリストラはどこで起こりますか? コントローラーでそれを行う必要がある場合は... /どのように?また、私たちがそこにいたら...「懸念の分離」に違反していないのでしょうか? ビューで行う場合は、フレームワークを変更して、要求されたフォーマットに基づいて正しいビューを選択する方法を教えてください。 ありがとうございます。 – wgpubs
私は同意します。ほとんどの場合、JSONを操作するための別のモデルが必要です。コントローラの関心事は、ビューにモデルを提供することです。ビューには、そのモデルが何であるべきかを決めること、そしてそのモデルにどのビューを与えるべきかが含まれます。コントローラーがそれを行うことはまったく関連しています。ビューがコントローラーの仕事をしていたならば、間違いなく違反になるでしょう。モデル構築を示すためにサンプルを編集しました。 – Sam
そうですね、コントローラはデータがどのようにパッケージ化されてビューに送られたのか責任を負うべきだからですが、それは責任を負うべきです。使用されている1つまたは複数のクライアント側フレームワーク(ExtJs、Jquery、Mootoolsなど)に基づいて、潜在的に多くの形式のデータ ここでデータの束を返すだけではありません... JQueryまたはFOR ExtJのデータを返しています。これは、分離物が少しばかり不明瞭になり、ユニット・テスト・コントローラーも少し毛深くなります。 – wgpubs