「ActionResult クラス (System.Web.Mvc)」の版間の差分
imported>Administrator 編集の要約なし |
imported>Administrator |
||
| 22行目: | 22行目: | ||
* [[PartialViewResult]] - 指定されたビューをレンダリングして、HTMLフラグメント(htmlタグやbodyタグのないAJAX差込用のHTMLパーツ)として送信する。 | * [[PartialViewResult]] - 指定されたビューをレンダリングして、HTMLフラグメント(htmlタグやbodyタグのないAJAX差込用のHTMLパーツ)として送信する。 | ||
* [[ViewResult]] - 指定されたビューをレンダリングして送信する。通常はこれ。 | * [[ViewResult]] - 指定されたビューをレンダリングして送信する。通常はこれ。 | ||
=== 独自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> | |||
== 関連項目 == | == 関連項目 == | ||