「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>


== 関連項目 ==
== 関連項目 ==