2010-08-22 143 views
4

我有一個樣本,我正在建設,那是使用Northwind數據庫。 我有一個視圖,其中顯示了特定類別的所有產品,並使用ul生成帶有圖像和產品名稱和價格的項目。如何在asp.net mvc中渲染圖像?

我在這裏使用了代碼http://blogs.msdn.com/b/miah/archive/2008/11/13/extending-mvc-returning-an-image-from-a-controller-action.aspx

並且已經到了這樣的地步,如果我右鍵單擊我的頁面上的圖像,我會得到 以下圖像url。

這是我提供的操作方法,它只需要分類ID。在我ImageController /圖片/顯示/ 1

我的操作方法如下:

// 
    // GET: /Image/Show 
    public ActionResult Show(int id) 
    { 
     var category = northwind.AllCategories().Single(c => c.CategoryID == id); 
     byte[] imageByte = category.Picture; 
     string contentType = "image/jpeg"; 

     return this.Image(imageByte, contentType); 
    } 

注:圖片是一個byte []

然後我把它在我看來是這樣的。 (產品是我認爲的型號)

但我仍然無法得到要顯示的圖像。

+0

導航到操作的URL(/ image/show/1)時圖像是否正確顯示?如果是這樣,那麼將圖像嵌入到HTML中的方式會有錯誤。 否則,檢查您的方法使用Fiddler2或類似方法返回的數據。 – LorenzCK 2010-08-22 09:57:45

回答

10

變化行動

public FileContentResult Show(int id) 
{ 
    var category = northwind.AllCategories().Single(c => c.CategoryID == id); 
    byte[] imageByte = category.Picture; 
    string contentType = "image/jpeg"; 

    return File(imageByte, contentType); 
} 

和發送產品實例來查看和嘗試有鑑於此

<img src="<%: Url.Action("Show","Image",new { id = Model.Category.CategoryID }) %>" /> 
+0

你明白了。感謝您的幫助,只是意識到您確實需要我。 – 2010-08-22 11:33:27

+0

Flippin'真棒! – 2010-10-12 02:00:44

0

我不知道如果這是你有問題,但我一直把握的動作和控制器名稱:

<%= Url.Action("Show", "Image", new { id = product.Category.CategoryID }) %> 
+0

我也更新了我的,謝謝。 – 2010-08-22 11:17:48

1

嘗試使用此方法代替:

public FileContentResult Show(int id) 
{ 
    var category = northwind.AllCategories().Single(c => c.CategoryID == id); 
    byte[] imageByte = category.Picture; 
    string contentType = "image/jpeg"; 
    return File(imageByte, contentType); 
} 

這應該如果你不使用這個擴展名是基本的方法。如果這有效,錯誤是擴展,如果這不起作用錯誤是其他地方 - 可能在路由。同時檢查古斯塔夫的答案!

+0

我改變了方法,但仍然沒有顯示圖像。該圖像顯示的網址爲/圖像/顯示?CategoryID = 1 和我的路線是/產品/瀏覽/飲料例如 – 2010-08-22 11:18:32

+0

原來我不得不使用anoynomus類型 2010-08-22 11:31:00

0

原來我不得不使用anoynomus型 ',這樣的路徑是/圖像/ Show/1,而不是/ Image/Show?CategoryID = 1。這當然需要將Northwind中的圖像從位圖更新爲Jpeg。