2017-02-12 66 views
1

我是ASP.NET MVC Web開發新手。在MVC中顯示數據庫中的圖像

我想從SQL Server數據庫的剃刀視圖中的img標籤中顯示圖像。

在我的模型圖像被存儲爲字節的數組:

public class Business 
    { 
     public string ID { get; set; } 

     [Required] 
     public string BusinessName { get; set; } 

     public string City { get; set; } 

     [Required] 
     public string Description { get; set; } 

     public byte[] LogoImage { get; set; } 

    } 

在控制器我是從分貝獲取圖像數據[VARBINARY(MAX)]柱:

... 
    LogoImage = (byte[])reader["LogoImage"] 
... 

在查看我有一個標準的詳細信息模板,我把以下代碼:

@{ 
    var base64 = Convert.ToBase64String(model.LogoImage); 
    var imgSrc = String.Format("data:image/gif;base64,{0}", base64); 
} 
<img src='@imgSrc' style="max-width:100px; max-height:100px;" /> 

所以,我真的很掙扎在剃刀視圖,如果對待其中一個,則會發生其他錯誤。顯示除圖像外的其他屬性。

有人可以建議我如何在剃鬚刀視圖中顯示圖像? 將圖像填充爲img src ='... long data ...'是否好? 如何從模型傳遞或訪問數組?我是否必須將它轉換爲字符串@ Html.DisplayFor(model => model.LogoImage)?

+0

你會得到什麼錯誤?如果將「model.Image」替換爲「model.LogoImage」,並且圖像實際上具有gif格式,則代碼應該可以工作。 – NineBerry

+0

@NineBerry Thnx快速響應,我已更改爲LogoImage(打字錯誤)。因此,我無法將model數組作爲model.LogoImage在當前上下文中顯示'model'不存在。我應該訪問爲Html.DisplayFor(模型=> model.LogoImage)? – user2992532

+1

你需要拼寫模型與大寫M. Html.DisplayFor不知道如何處理圖像 – NineBerry

回答

0

你這裏有兩種選擇:

  1. 請返回你的形象和點的內容從img標籤的src他的行動的行動。此操作應使用文件結果類型。
  2. 從你的控制器,你的圖像編碼爲base64,並使用您的src中的數據。也許在這裏,你遇到的問題是你需要使用@Html.Raw(imgSrc),所以它不會逃避base64字符串。

如果您的圖像很大,也許第一個選項更好。另外,所有瀏覽器都可能不支持數據url。