ASP.net MVC - 基于byte []显示图像系列

时间:2009-02-02 23:29:13

标签: asp.net-mvc

我想使用ASP.net MVC在网页上显示图像列表和描述。图像存储在SQL Server数据库中,我将它们作为byte []返回。

但是,我不明白如何在页面上显示一系列图像。我想做这样的事情:

<% foreach(Product p in Model.Products)
      Response.Write(p.Description)
      Response.Write(html.Image(p.ImageArray)
%>

但我见过的唯一代码就是显示一张图片......

谢谢

4 个答案:

答案 0 :(得分:1)

您需要创建一个自定义IHttpHandler来提供如下图像:

    public class AlbumArt : IHttpHandler
        {
            public void ProcessRequest(HttpContext Context)
            {
byte [] b = your image...;
    Context.Response.ContentType = "image/jpeg";
                        Context.Response.BinaryWrite(b);
    }
    }

然后您需要使用html中的图像标记从那里检索每个图像,例如

<img src="AlbumArt.ashx?imageId=1" />

答案 1 :(得分:1)

HTML中的图像是外部链接,未嵌入HTML本身。所以你确实需要两个请求。但是你可以稍微优化一下。在第一个请求中,不要检索图像数据本身,只检索元数据。然后在你的HttpHandler中,实际上检索二进制图像数据。

答案 2 :(得分:1)

您可以只编写一个返回图像文件内容的控制器操作,而不是创建新的HttpHandler。然后将图像添加到页面,并将其src属性设置为您创建的操作。

编辑:请注意,与提供静态文件相比,从数据库中将图像作为byte []传输效率低下。

答案 3 :(得分:0)

每个图像都必须单独发送(这意味着从浏览器为每个图像创建一个IMG请求),否则您必须在发回之前将它们加入到单个图像中。如果你运行上面的代码,很可能你只会看到第一张图片。