0

MVC Web アプリケーションがあり、(データベースから) 画像をページに表示しようとしていますが、成功しません。私が見つけたさまざまな例に従ってください。ページ「ImageTest.aspx」とハンドラー「ImageViewer.ashx」があります

ハンドラの内容は

<%@ WebHandler Language="C#" Class="ImageHandler" %>

using System.Web;

namespace Decri.WebClient.Views.Tablet
{
    public class ImageViewer : IHttpHandler
    {
        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "image/jpeg";
            context.Response.WriteFile("palmtree.jpg");
        }

        public bool IsReusable
        {
            get { return false; }
        }
    }
}

私の「ImageTest」ページには次のものが含まれています(データベースを使用する前に、基本的な機能を動作させようとしています)

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>

<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">

    <h2>Image Test</h2>

    <img src="ImageViewer.ashx?id=1" alt="Dynamic Image" />

</asp:Content>

ページに「赤い十字」の欠落した画像アイコンが表示され、デバッグ時に、ハンドラーの「ProcessRequest」に配置したブレークポイントでコードが停止しません。HTML ソースを見ると、コードは上記と同じです (Site.Master から取得した HTML が追加されています)。

ここでは、コントローラーのエントリが単純に保たれているコントローラーに基づいています (ハンドラーのコントローラーには何もありません。これは正しいと理解しています)。

    public ActionResult ImageTest()
    {
        return View();
    }

フォルダーに通常の画像があり、それを通常 (ハンドラーなしで) 参照すると、表示されないことに注意しました。それを CONTENT\IMAGES フォルダーに移動すると、移動します。ハンドラーを CONTENT\IMAGES フォルダーにコピーしようとしましたが、違いはありませんでした。

私は今、やや途方に暮れており、この問題を抱えて機能している誰かからのガイダンスをいただければ幸いです。

4

1 に答える 1

2

これを試して:

context.Response.WriteFile(context.Server.MapPath("~/Content/Images/palmtree.jpg"));

MapPathハンドラーを呼び出さないと、アプリケーションのbinディレクトリで画像が検索されます。

MVC フレームワークを使用しているため、より一貫した方法があります (独自のハンドラーを実装する必要はありません)。

public class HelloController : Controller
{
    public ActionResult ShowImage(int id)
    {
        var fileName = "palmtree.jpg";
        var rawFile = LoadFile(); //Assuming, LoadFile() returns byte[]

        return File(rawFile, MimeMapping.GetMimeMapping(fileName), fileName);
    }
}

意見:

<img src="@Url.Action("ShowImage", "Hello", new { id = 1 })" alt="Dynamic Image" />
于 2013-12-11T20:25:01.420 に答える