Asp.net MVC - пытается отобразить изображения, извлеченные из дБ \ - PullRequest
0 голосов
/ 25 марта 2010

// 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; }


}

Я получаю красный крестик, который обычно ассоциируется с файлом изображения, который не найден. Я убедился, что моя таблица базы данных отображается после выполнения сохраненного процесса загрузки изображения. Любая идея или совет будет принята с благодарностью.

Ответы [ 3 ]

4 голосов
/ 25 марта 2010

Как я вижу, вы используете 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 }) %>" />
0 голосов
/ 26 марта 2010

Спасибо за помощь. Вот как я решил проблему (использует 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;
}
0 голосов
/ 25 марта 2010

Вы не будете возвращать изображение из вашей базы данных. Вы будете получать байт []. Я рекомендую создать обработчик ASP.NET, который возвращает изображения из БД. Тогда вы можете связаться с обработчиком.

Посмотрите на этот пост, чтобы узнать, как это сделать: Динамически отображать asp: Изображение из записи BLOB в ASP.NET

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...