2009-02-02 46 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中,實際上檢索二進制圖像數據。