ASP.net MVC - Показать серию изображений на основе байта [] - PullRequest
3 голосов
/ 03 февраля 2009

Я хочу отобразить список изображений и описание на веб-странице, используя ASP.net MVC. Изображения хранятся в БД SQL Server, и я возвращаю их в виде байта [].

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

<% foreach(Product p in Model.Products)
      Response.Write(p.Description)
      Response.Write(html.Image(p.ImageArray)
%>

Но единственный код, который я видел, отображал одно изображение ...

Спасибо

Ben

Ответы [ 4 ]

1 голос
/ 03 февраля 2009

Вместо того, чтобы создавать новый HttpHandler, вы можете просто написать действие контроллера, которое возвращает содержимое файла изображения. Затем добавьте изображения на страницу с атрибутом src, установленным для созданного вами действия.

РЕДАКТИРОВАТЬ: обратите внимание, что потоковая передача изображений в виде байта [] из базы данных неэффективна по сравнению с обслуживанием статических файлов.

1 голос
/ 03 февраля 2009

Вам нужно будет создать собственный IHttpHandler, который будет обслуживать изображения примерно так:

    public class AlbumArt : IHttpHandler
        {
            public void ProcessRequest(HttpContext Context)
            {
byte [] b = your image...;
    Context.Response.ContentType = "image/jpeg";
                        Context.Response.BinaryWrite(b);
    }
    }

И тогда вам нужно будет извлечь каждое изображение оттуда, используя теги изображений в вашем html, что-то вроде

<img src="AlbumArt.ashx?imageId=1" />
1 голос
/ 03 февраля 2009

Изображения в HTML являются внешними ссылками, не встроенными в сам HTML. Так что вам нужно два запроса. Однако вы можете немного оптимизировать это. В первом запросе не извлекайте сами данные изображения, только метаданные. Затем в вашем HttpHandler фактически получите данные двоичного изображения.

0 голосов
/ 03 февраля 2009

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

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