【问题标题】:Asp.net mvc - trying to display images pulled from db \Asp.net mvc - 试图显示从数据库中提取的图像\
【发布时间】:2010-03-24 21:40:09
【问题描述】:

//Inherits="System.Web.Mvc.ViewPage"

<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”。我已经验证了我的数据库表在上传图像的存储过程执行后显示。任何见解或建议将不胜感激。

【问题讨论】:

    标签: c# sql sql-server asp.net-mvc


    【解决方案1】:

    正如我看到你正在使用 mvc 使用这个看看示例 imagedata 是 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 }) %>" />
    

    【讨论】:

      【解决方案2】:

      您不会从数据库中返回图像。你会得到一个字节[]。我的建议是创建一个从数据库返回图像的 ASP.NET 处理程序。然后你可以链接到处理程序。

      查看这篇 SO 帖子了解如何做到这一点:Dynamically Rendering asp:Image from BLOB entry in ASP.NET

      【讨论】:

        【解决方案3】:

        感谢您的帮助。这就是我解决问题的方法(使用 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;
        }
        

        【讨论】:

          猜你喜欢
          • 2013-09-21
          • 2017-08-03
          • 1970-01-01
          • 2011-01-27
          • 1970-01-01
          • 2011-05-07
          • 1970-01-01
          • 1970-01-01
          • 2018-01-24
          相关资源
          最近更新 更多