2つの質問があります:
JSONResultとActionResultの違いは何ですか?
MVCでJSONResultを使用する場合
ActionResult
は、アクションが返すことができる抽象クラスです。
Controller
のヘルパーメソッド(たとえば、Json()
、Content()
、View()
、...)は、ActionResult
(JsonResult
を含む)。
アクションメソッドはActionResult
を返すように宣言する必要があります。そうすると、具体的な結果クラスを自由に返すことができます。
クライアント(WebページまたはモバイルクライアントのJavaScript)で使用される生のJSONデータを返す場合は、JsonResult
を使用します。
ビューを返す、リダイレクトなどをブラウザで処理する場合は、ActionResult
を使用します。
ActionResult
は抽象クラス .JsonResult
はActionResult
のサブタイプです。したがって、両方のタイプのJSONコンテンツを返すことができます。
JsonResult
これはもう少し複雑ですが、まだそれほど複雑ではありません。また、ContentTypeをハードコーディングしていますが、少し複雑になっているのは、ハードコーディングされたJavaScriptSerializerを使用してJSONデータをシリアル化してから、応答に直接書き込むことです。
この投稿は役に立ちます
http://brendan.enrick.com/post/types-of-aspnet-mvc-3-action-results.aspx
MSDNドキュメント によると、ActionResult
:
ActionResultクラスは、アクションメソッドの結果をカプセル化し、アクションメソッドに代わってフレームワークレベルの操作を実行するために使用されます。
アクションメソッドは、作業を実行してアクション結果を返すことにより、ユーザー入力に応答します。アクション結果は、アクションメソッドに代わってフレームワークが実行するコマンドを表します。 ActionResultクラスはアクション結果の基本クラスです
そして JsonResult の場合:
JSON形式のコンテンツを応答に送信するために使用されるクラスを表します。