2010-03-24 29 views
0

//Inherits="System.Web.Mvc.ViewPage <FilmFestWeb.Models.ListVideosViewModel>「Asp.net MVC - 試圖顯示圖像從拉DB

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 

    <h2>ListVideos</h2> 

    <% foreach(BusinessObjects.Video vid in Model.VideoList){%> 
    <div class="videoBox"> 
      <%= Html.Encode(vid.Name) %> 
      <img src="<%= vid.ThumbnailImage %>" />  
    </div> 


    <%} %> 

</asp:Content> 

// ListVideosViewModel

public class ListVideosViewModel 

{ 

    public IList<Video> VideoList { get; set; } 

} 

//視頻

public class Video 

{   

    public long VideoId { get; set; } 

    public long TeamId { get; set; } 

    public string Name { get; set; } 

    public string Tags { get; set; } 

    public string TeamMembers { get; set; } 

    public string TranscriptFileName { get; set; } 

    public string VideoFileName { get; set; } 

    public int TotalNumRatings { get; set; } 

    public int CumulativeTotalScore { get; set; } 

    public string VideoUri { get; set; } 

    public Image ThumbnailImage { get; set; } 


} 

我收到了 「紅X」,我通常有關聯找不到圖像文件。我已經驗證,我的數據庫表顯示在存儲過程之後上傳圖像執行。任何見解或建議將不勝感激。

回答

0

您將不會從您的數據庫中返回圖像。你會得到一個字節[]。我的建議是創建一個從數據庫返回圖像的ASP.NET處理程序。然後你可以鏈接到處理程序。

看看這個SO張貼關於如何做到這一點:Dynamically Rendering asp:Image from BLOB entry in ASP.NET

4

,我看到你正在使用MVC使用這個看的例子圖象 - 爲byte []數組和imagemimetype是一個字符串,這是一個例子在您的控制器

public FileContentResult GetImage(int ProductID) 
{ 
    Product product = (from p in productsRepository.Products 
    where p.ProductID == ProductID 
    select p).First(); 
    return File(product.ImageData, product.ImageMimeType); 
} 

用這個動作來顯示視圖

<img src="<%= Url.Action("GetImage", "Products", 
new { Model.ProductID }) %>" /> 
0

謝謝你的幫助的形象。這就是我解決問題的方法(使用entlib 4.1)

public ThumbnailImage GetThumbnailImageByVideoId(long videoId) 
{ 
    Database db = DatabaseFactory.CreateDatabase("Connection String"); 
    DataSet ds = new DataSet(); 
    ThumbnailImage img = null; 

    try 
    { 
     using (DbCommand cmd = db.GetStoredProcCommand("usp_GetThumbnailImageByVideoId")) 
     { 
      db.AddInParameter(cmd, "VideoId", DbType.Int64, videoId);      
      db.LoadDataSet(cmd, ds, "Video"); 
     } 

     foreach (DataRow dr in ds.Tables["Video"].Rows) 
     { 
      if (! string.IsNullOrEmpty(dr["ThumbnailImage"].ToString())) 
      { 
       byte[] b = dr["ThumbnailImage"] as byte[]; 
       MemoryStream ms = new MemoryStream(b); 
       img = new ThumbnailImage(); 
       img.Image = Image.FromStream(ms); 
       img.ContentType = dr["ImageContentType"].ToString(); 
      } 
      break; 
     } 
    } 
    catch (Exception ex) 
    { 
     throw ex; 
    } 
    return img; 
}