8

既存のアクションメソッドを使用して、その戻り値を文字列にレンダリングし、AJAXリクエストへの応答用のJSONとして送信したいと思います。

これを行うには、ActionResultを文字列にレンダリングする必要があります。どうすればこれを行うことができますか?

this.Content()を使用して文字列をActionResultに変換できるのとは逆です。

アップデート

既存の最初のアクションメソッドはタイプActionResultを返しますが、実際にはHTTPPOSTリクエストに応答するためにViewResultを返します。AJAXリクエストに応答するJsonResultを返す2番目のアクションメソッド(私のファサード)があります。この2番目のアクションメソッドで1番目のアクションメソッドを使用してHTMLをレンダリングしたいと思います。

物事の壮大なスキームでは、標準のHTTPポストだけでなく、ファサードアクションメソッド(2番目のアクションメソッド)を介したAJAXリクエストによっても取得可能なActionResult(アクションメソッドから生成された)が必要です。このように、私は開発者として、HTTPPostまたはAJAXを使用してページのレンダリングを取得することを選択できます。

申し訳ありませんが、この更新をできるだけ短くしようとしました。ありがとう。

4

3 に答える 3

6

以下の 4 番または 6 番をお探しですか?

ここから抽出されたテキスト:

アクションの結果について

コントローラ アクションは、アクション結果と呼ばれるものを返します。アクションの結果は、ブラウザーの要求に応じてコントローラーのアクションが返すものです。

ASP.NET MVC フレームワークは、次のようないくつかの種類のアクション結果をサポートしています。

  1. ViewResult - HTML とマークアップを表します。
  2. EmptyResult - 結果がないことを表します。
  3. RedirectResult - 新しい URL へのリダイレクトを表します。
  4. JsonResult - AJAX アプリケーションで使用できる JavaScript Object Notation の結果を表します。
  5. JavaScriptResult - JavaScript スクリプトを表します。
  6. ContentResult - テキスト結果を表します。
  7. FileContentResult - ダウンロード可能なファイル (バイナリ コンテンツを含む) を表します。
  8. FilePathResult - ダウンロード可能なファイル (パス付き) を表します。
  9. FileStreamResult - ダウンロード可能なファイルを表します (ファイル ストリームを使用)。

これらのアクションの結果はすべて、基本の ActionResult クラスから継承されます。

于 2011-01-03T15:34:38.670 に答える
1

ActionResult ではなく ContentResult として返す

私は次のようなものを使用します

    public ContentResult Place(string person, string seat)
    {
        string jsonString = null;
        try
        {

            jsonString = AllocationLogic.PerformAllocation(person, seat);
        }
        catch {
            jsonString = AllocationLogic.RaiseError(timeout);
        }
        return Content(jsonString);
    }
于 2011-01-03T15:37:08.700 に答える
1

本当にあなたJsonResultが望むものではありませんか?Json(object jsonObject)で定義されているメソッドを呼び出すと、 JSONControllerにシリアルjsonObject化され、適切な応答が返されます (すべてのヘッダーが正しく設定されているなど)。通常、JSON リクエストは POST である必要がありますが、GET も許可するように構成できます。

于 2011-01-03T15:37:50.213 に答える