我想使用ASP.net MVC在网页上显示图像列表和描述。图像存储在SQL Server数据库中,我将它们作为byte []返回。
但是,我不明白如何在页面上显示一系列图像。我想做这样的事情:
<% foreach(Product p in Model.Products)
Response.Write(p.Description)
Response.Write(html.Image(p.ImageArray)
%>
但我见过的唯一代码就是显示一张图片......
谢谢
本
答案 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请求),否则您必须在发回之前将它们加入到单个图像中。如果你运行上面的代码,很可能你只会看到第一张图片。