2010-03-24 32 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; 
}