2009-02-02 79 views
3

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

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

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

但是我已经看见了这只代码已经显示单个图像...

谢谢

回答

1

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

编辑:请注意,与服务静态文件相比,从数据库流式传输图像为字节[]效率低下。

0

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

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" /> 
+0

嗨,尼克,我会给出一个去,遗憾的是这意味着两次去数据库 - 一旦得到desc,一次为图像 - 任何方式呢?谢谢本 – 2009-02-02 23:36:13

1

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