ASP.NET误人子弟教程:MVCの下でどのようにピクチャーに戻ります


ここ数日はちょっとしたことで忙しくて、何も書いていません.今日は簡単なものを遊びに来ました.MVCの下でどのように画像に戻るかということです.伝統的なWebFormの下では、どのようにするかはよく知られていますが、構造が厳しいMVCの中で、接触し始めたばかりの友达は、どのように実現するかよく分からないかもしれません.
 
まず、コントローラから始めなければなりません.昨日、ある友达が私にコントローラは普通return Viewではないかと聞きました.どうやって写真を返しますか?もちろん、Controllerクラスにもreturn Imageはありませんが、前回の例ではJSONに戻りますが、実はファイルストリームを返すことができます.最初はViewDataを使いたいと思っていましたが、これはビューページでサーバ側コードでしか操作できません.JSを使いたいなら、それは困ります.
 
ControllerクラスにはFileメソッドがあります.もちろん、N個のリロードがあり、返されるオブジェクトが異なります.ここでは、要素でsrc属性がFileStreamResultオブジェクトの内容を読み取ることができず、空白なので、FileStreamResultに戻って取得することはできません.
 
次のコードを参照してください.複雑ではありません.まず矩形を描き、矩形に文字を描き、戻ります.
        public ActionResult GetImg()
        {
            Bitmap bmp = new Bitmap(100, 35);
            Graphics g = Graphics.FromImage(bmp);
            g.Clear(Color.White);
            g.FillRectangle(Brushes.Red, 2, 2, 65, 31);
            g.DrawString("  MVC", new Font("  ", 15f), Brushes.Yellow, new PointF(5f, 5f));
            MemoryStream ms = new MemoryStream();
            bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
            g.Dispose();
            bmp.Dispose();
            return File(ms.ToArray(), "image/jpeg");
        }

 
注意、この方法はあなたのコントローラで定義され、Actionに属します.
フロントページでは、このように処理します.
    <div>
        <img src="/Home/GetImg" width="100" alt="" />
    </div>

これにより、必要に応じてJSで操作することができます.例えば、ランダムな画像を返したり、検証コードを返したりすることができます.