2017-02-12 7 views
1

Я новичок в веб-разработке ASP.NET MVC.Показать изображение из базы данных в MVC

Я хотел показать изображение в теге img в виде бритвы из базы данных SQL-сервера.

В моей модели изображение хранится в виде массива байтов:

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"] 
... 

В view У меня есть стандартный шаблон данных, где я помещаю следующий код:

@{ 
    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 (опечатка). Поэтому rn Я не могу получить доступ к массиву модели как model.LogoImage говорит, что «модель» не существует в текущем контексте. Должен ли я получить доступ как Html.DisplayFor (model => model.LogoImage)? – user2992532

+1

Вам нужно указать модель с капиталом M. Html.DisplayFor не знает, как обращаться с изображениями – NineBerry

ответ

0

У вас есть два варианта здесь:

  1. сделать Action, который возвращает содержимое вашего образа, и указывают на его действия с тегом IMG SRC. Это действие должно использовать тип результата файла.
  2. С вашего контроллера, кодируйте свое изображение как base64 и используйте данные в своем src. Может быть, здесь проблема заключается в том, что вам нужно использовать @Html.Raw(imgSrc), чтобы она не выходила из строки base64.

Если ваше изображение большое, возможно, первый вариант лучше. Кроме того, URL-адреса данных могут не поддерживаться во всех браузерах.

Смежные вопросы