Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

ASP.NET C#

ASP.NETのActionResultの戻り値の種類について

投稿日:2021年7月26日 更新日:

 

<目次>

(1) ASP.NETのActionResultの戻り値の種類について
 (1-1) はじめに
 (1-2) ASP.NETのActionResultの戻り値の種類
 (1-3) ActionResultの戻り値を実際のプログラムでご紹介

(1) ASP.NETのActionResultの戻り値の種類について

(1-1) はじめに

ASP.NET MVCにおける「アクションメソッド」はクライアントからのリクエストに対して、具体的な処理(ビューを返却したり、指定URLにリダイレクトしたり)をする目的のメソッドです。
 
「アクションメソッド」の戻り値はActionResult型(及びその派生クラス)を通じて、処理の結果(次の動作)を返却しますが、本記事ではその種類を紹介します。
 

(1-2) ASP.NETのActionResultの戻り値の種類

ActionResultクラスには派生クラスが複数あり、その分だけ戻り値の種類もあります。以下はその一覧です。
 
(表)ActionResultの戻り値(ActionResultクラスの派生クラス)の種類
●型(クラス) ●ヘルパーメソッド ●概要
ViewResult View() ビューを返却
PartialViewResult PartialView() 部分ビューを返却
ContentResult Content() テキストを返却
RedirectResult Redirect() ユーザーを指定の「URL」にリダイレクト
RedirectToRouteResult RedirectToAction() ユーザーを指定の「アクション」にリダイレクト
JsonResult Json() シリアライズ(※注1)されたJSON形式を返却
(※注1)シリアライズ
オブジェクトを保存したり、メモリやDBやファイルに送る目的で、バイトストリーム(※注2)に変換する事を「シリアライズ」と呼びます。
(※注2)バイトストリーム
アプリケーションとファイル間等でデータを読み書きする際に、連続したバイトとして読み書きするための仮想的なレイヤーです。
HttpNotFoundResult HttpNotFound() 404エラーなどを返却する場合
EmptyResult -(なし) 何も返却する必要がない場合(voidなど)
 

(1-3) ActionResultの戻り値を実際のプログラムでご紹介

ActionResultの戻り値をいくつか実際のプログラムでご紹介します。
 

●ViewResult

ViewResult型の場合は、Viewメソッドを用いて結果を返却します。
 
(アクションメソッド例)
public ViewResult Trend()
{
    var textbook = new TextBook() { Name = "Math" };
    return View(textbook);
}
 
これを実行すると「TextBooks/Trend」のビュー(Trend.cshtml)が返却されます。
(図121)①
 
TextBooksController.csのTrend()メソッドなので、下図のViews配下⇒TextBooks配下⇒Trend.cshtmlビューを返却します。
(図121)②

●ContentResult

ContentResult型の場合は、Contentメソッドを用いて結果を返却します。
 
(アクションメソッド例)
public ContentResult Trend()
{
    return Content("Hello World Rainbow");
}
 
これを実行すると、引数に指定した文字列「”Hello World Rainbow”」が表示されます。
 
(図122)

●RedirectToRouteResult

RedirectToRouteResult型の場合は、RedirectToActionメソッドを用いて結果を返却します。このメソッドは引数を3つ受け取る事ができ、それぞれの意味合いは以下の通りです。
 
(構文)
return RedirectToAction("[action]", "[controller]", [クエリパラメータ]);
(表)
第1引数:アクション リダイレクトする先のコントローラーの「アクション」の名前(コントローラーのメソッド名)を与えます。

(例)
“Trend”

第2引数:コントローラー リダイレクトする先のコントローラーの名前を与えます。

(例)
“TextBooks”

第3引数:クエリパラメータ URLの末尾に付与されるパラメータ(クエリパラメータ)を「匿名型オブジェクト」で渡します(名前の無いオブジェクト)。

(例)
new { subject = “math”, score = 78 }

(アクションメソッド例)
public ActionResult Index()
{
    return RedirectToAction("Trend", "TextBooks", new { subject = "math", score = 78 });
}
 
上記の例で実行した際の処理フローは次の図のようになります。まず、初期画面は「Home」コントローラーの「Index」アクションですが、この「Index」アクション内で「RedirectToAction」メソッドを実行しており、今後は「TextBooks」コントローラーの「Trend」アクションにリダイレクトしています。結果としてリダイレクト先のビューが表示されている事が、結果画面のURLから確認できます。
 
(図123)①処理フローイメージ

(図123)②実行結果例

●HttpNotFoundResult

HttpNotFoundResult型の場合は、HttpNotFoundメソッドを用いて結果を返却します。

(アクションメソッド例)

 
public HttpNotFoundResult Trend()
{
    return HttpNotFound();
}
これを実行すると404エラーが返却されました。

(図124)

●EmptyResult

EmptyResult型の場合はヘルパーメソッドが無いため、EmptyResultクラスのインスタンスを返却します。
(アクションメソッド例)
 
public EmptyResult Trend()
{
    return new EmptyResult();
}
 
これを実行すると空のページが返却されました。

(図125)

目次にもどる

Adsense審査用広告コード


Adsense審査用広告コード


-ASP.NET, C#

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

C#のDB接続時のエラー(provider: Named Pipes Provider, error: 40 – Could not open a connection to SQL Server)

<目次> (1) 記事の目的  (1-1) エラー概要  (1-2) エラー原因  (1-3) エラー対策   (1-3-1) SQLServer:リモート接続を有効化   (1-3-2) SQLSe …

C#で見るgetやsetとは?プロパティの基礎についてご紹介

<目次> (1) C#で見るgetやsetとは?プロパティの基礎についてご紹介  (1-1) プロパティとは?  (1-2) プロパティの構文  (1-3) サンプルプログラム  (1-4) プロパテ …

Visual Studioのプロジェクトを別ソリューションに移動する手順

  <目次> (1) Visual Studioのプロジェクトを別ソリューションに移動する手順  (1-1) プロジェクトを別ソリューションに移動する手順  (1-2) 参考①:「.cspr …

C#のデリゲートが分からない・・を解決!初心者向けになるべく分かり易く説明してみた

<目次> (1) C#のデリゲートが分からない・・を解決!初心者向けになるべく分かり易く説明してみた  (1-1) デリゲートとは?「関数へのポインタ」だけでは説明しきれない・・  (1-2) デリゲ …

ASP.NET MVCにおけるSessionオブジェクトについて

<目次> (1) ASP.NET MVCにおけるSessionオブジェクトについて  (1-1) Session(セッション)とは?   (1-1-1) セッションの開始と終了  (1-2) Sess …

  • English (United States)
  • 日本語
Top