2011-01-03 15 views
6

私は既存のアクションメソッドを取得し、その戻り値を文字列にレンダリングし、AJAXリクエストへの応答としてJSONとして出力したいと考えています。ASP.NET MVC:ActionResultを文字列に変換する方法

これを行うには、ActionResultを文字列にレンダリングする必要があります。私はこれをどのようにして行うのですか?

これは、this.Content()を使用して文字列をActionResultに変換できるところと反対です。

更新

既存および第一のアクションメソッドは、型のActionResultを返しますが、それは実際にHTTP POSTリクエストに応答するするViewResultを返します。私はAJAXリクエストに応答するJsonResultを返す2番目のアクションメソッド(私のファサード)を持っています。この2番目のアクションメソッドで1番目のアクションメソッドを使用してHTMLをレンダリングします。

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

申し訳ありません申し訳ありませんが、このアップデートはできるだけ短くしました。ありがとう。

+1

確かに 'ContentResult'または' JsonResult'があなたの望むものです。 –

答えて

6

番号4または6を探していますか? hereから抽出

テキスト:

理解アクションコントローラのアクションは、アクションの結果と呼ばれるものを返す

結果。アクション結果は、ブラウザの要求に応答してコントローラのアクションが返すものです。

  1. するViewResult - HTMLとマークアップを表します:

    ASP.NET MVCフレームワークは、以下を含むアクションの結果のいくつかのタイプをサポートしています。

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

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

+1

#6は私が探していたものでした。ありがとう! +1 –

1

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); 
    } 
+2

'JsonResult'はおそらくもっと良い選択です。 –

+1

私はおそらく正しいと思います。私のコードをもう一度見てみましょう: – Andiih

1

ようなものを使用するのActionResult

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

+0

既存のアクションメソッドはActionResultを返しますが、実際にはViewResultを返します。私は既存のActionメソッドのJsonResultを返すことはできませんが、Jsonを出荷するActionメソッドにはJsonResultを使用します。これには2つの方法があります。 – burnt1ce

+2

しかし、なぜAJAXリクエストはページ全体を必要としますか?あまりにも多くの情報、doctype、head、bodyなどを受け取るでしょう.AJAXリクエストではデータの塊がほしいとは思いませんか? 'Request.IsAjaxRequest()'を使って、両方のシナリオを1つのアクションで処理させることを検討しましたか? –

関連する問題