最新版 |
編集中の文章 |
1行目: |
1行目: |
− | ActionResult クラスとは、[[ASP.NET MVC]]の[[アクション・メソッド]]の戻り値として使う各種クラス(ActionResultを継承したクラス)のベースクラスである。 | + | ActionResult クラスとは、[[ASP.NET MVC]]のアクション・メソッドの戻り値として使う各種クラス(ActionResultを継承したクラス)のベースクラス。 |
| | | |
− | [[アクションメソッド]]内でActionResult(を継承したクラス)の中身を穴埋めしてやると、[[ASP.NET MVC]]のフレームワーク側でその内容に従い[[HTML]]や[[JSON]]などのHTTPレスポンスが生成される。
| + | アクションメソッド内でActionResult(を継承したクラス)の中身を穴埋めしてやると、ASP.NET MVCのフレームワーク側でその内容に従いHTMLなどのHTTPレスポンスが生成される。たとえばViewResultであればビュー(HTMLテンプレート)を呼び出してレンダリングしたり、FileResultであればファイルを指定するだけでダウンロードダイアログを表示したりできる。 |
| | | |
− | たとえば[[ViewResult]]であれば[[ビューエンジン]](HTMLテンプレートエンジン)を呼び出して[[HTML]]をレンダリングしたり、[[FileResult]]であればファイルを指定するだけでフレームワーク側で適切なHTTPレスポンスヘッダを生成し簡単にダウンロードダイアログを表示したりできる。
| + | ContentResultだけでを用いてゴリゴリ書けば20世紀のPerlで書かれたウェブアプリケーションばりのソースコードになること受けあい。まじおすすめ。 |
− | | |
− | [[ContentResult]]だけでを用いてゴリゴリ書けば20世紀の[[Perl]]で書かれた[[ウェブアプリケーション]]ばりの[[ソースコード]]になること受けあい。困ったらContentResult。まじおすすめ。
| |
| | | |
| == ActionResultの種類 == | | == ActionResultの種類 == |
14行目: |
12行目: |
| ** [[FileContentResult]] - バイト配列をHTTPレスポンスに書き込む。 | | ** [[FileContentResult]] - バイト配列をHTTPレスポンスに書き込む。 |
| ** [[FilePathResult]] - 指定されたファイルパスの中身をHTTPレスポンスに書き込む。 | | ** [[FilePathResult]] - 指定されたファイルパスの中身をHTTPレスポンスに書き込む。 |
− | ** [[FileStreamResult]] - [[Streamクラス]]の中身をHTTPレスポンスに書き込む。 | + | ** [[FileStreamResult]] - Streamクラスの中身をHTTPレスポンスに書き込む。 |
| * [[HttpUnauthorizedResult]] - 認証要求を送信する。 | | * [[HttpUnauthorizedResult]] - 認証要求を送信する。 |
| * [[JavaScriptResult]] - [[JavaScript]](文字列)を直接HTTPレスポンスに書き込む。 | | * [[JavaScriptResult]] - [[JavaScript]](文字列)を直接HTTPレスポンスに書き込む。 |
22行目: |
20行目: |
| * [[PartialViewResult]] - 指定されたビューをレンダリングして、HTMLフラグメント(htmlタグやbodyタグのないAJAX差込用のHTMLパーツ)として送信する。 | | * [[PartialViewResult]] - 指定されたビューをレンダリングして、HTMLフラグメント(htmlタグやbodyタグのないAJAX差込用のHTMLパーツ)として送信する。 |
| * [[ViewResult]] - 指定されたビューをレンダリングして送信する。通常はこれ。 | | * [[ViewResult]] - 指定されたビューをレンダリングして送信する。通常はこれ。 |
− |
| |
− | [[ASP.NET MVC 3]]で追加されたActionResult。
| |
− | * [[HttpNotFoundResult]]
| |
− | * [[HttpStatusCodeResult]]
| |
− | * [[RedirectResult]] - [[コンストラクタ]]の引数が追加され、[[301リダイレクト]]か[[302リダイレクト]]かを選べるようになった。
| |
− |
| |
− | === 独自ActionResult ===
| |
− | ActionResultクラスを継承することでオレオレActionResultを作ることができる。
| |
− |
| |
− | ==== 例:ImageResult ====
| |
− | Image(System.Drawing)のインスタンスを突っ込んで、ImageFormart(System.Drawing.Imaging)で指定された形式で出力するActionResultの例。
| |
− | <source lang="csharp">
| |
− | using System;
| |
− | using System.Collections.Generic;
| |
− | using System.Web.Mvc;
| |
− | using System.Drawing;
| |
− | using System.Drawing.Imaging;
| |
− |
| |
− | public class ImageResult : ActionResult
| |
− | {
| |
− | public ImageResult() { }
| |
− |
| |
− | public Image Image { get; set; }
| |
− | public ImageFormat ImageFormat { get; set; }
| |
− |
| |
− | private readonly Dictionary<ImageFormat, string> ContentTypes =
| |
− | new Dictionary<ImageFormat, string>()
| |
− | {
| |
− | {ImageFormat.Bmp , "image/bmp"},
| |
− | {ImageFormat.Gif , "image/gif"},
| |
− | {ImageFormat.Icon, "image/vnd.microsoft.icon"},
| |
− | {ImageFormat.Jpeg, "image/jpeg"},
| |
− | {ImageFormat.Png , "image/png"},
| |
− | {ImageFormat.Tiff, "image/tiff"},
| |
− | {ImageFormat.Wmf , "image/wmf"},
| |
− | };
| |
− |
| |
− | public override void ExecuteResult(ControllerContext context)
| |
− | {
| |
− | // verify properties
| |
− | if (this.Image == null)
| |
− | {
| |
− | throw new ArgumentNullException("Image");
| |
− | }
| |
− | if (this.ImageFormat == null)
| |
− | {
| |
− | throw new ArgumentNullException("ImageFormat");
| |
− | }
| |
− |
| |
− | // output
| |
− | var res = context.HttpContext.Response;
| |
− | res.Clear();
| |
− | res.ContentType = this.ContentTypes[this.ImageFormat];
| |
− | this.Image.Save(res.OutputStream, this.ImageFormat);
| |
− | }
| |
− | }
| |
− | </source>
| |
| | | |
| == 関連項目 == | | == 関連項目 == |
− | * [[ASP.NET MVC/アクション]]
| |
| * [[ASP.NET MVC]] | | * [[ASP.NET MVC]] |
| | | |