MVC3 возвращает файл изображения в виде байтовых данных при использовании jQuery Fancybox - PullRequest
0 голосов
/ 05 августа 2011

Я создал приложение MVC3 с контроллером (рисунок) и методом действия (GetImage), который возвращает содержимое файла (в моем случае изображение в формате jpeg)

public FileResult GetImage(int pictureID)
    {
        return File(Server.MapPath("~/Content/pic" + pictureID + ".jpg"), "image/jpeg");
    }

Когда я получаю доступ к изображениям в моих представленияхкак

<a id="single_image"><img src="/Picture/1" /></a>

.. Я получаю изображение, отображаемое правильно.

Но когда я применяю плагин jQuery Fancybox к этому изображению и нажимаю на изображение, оно отображает всплывающее окно с байтом [] данные внутри (что-то, что вы получите, если тип файла mime отсутствует).

Что я делаю не так?

PS: Извините, я не могу опубликовать изображения, но могу отправить их по электронной почте.

1 Ответ

0 голосов
/ 05 августа 2011

Просто получите ваши изображения напрямую, используя Html.Content в вашем представлении.

Формы

<a id="single_image">
    <img src="<%= Html.Content("~/Content/pic" + model.pictureID + ".jpg") %>" />
</a>

Бритва

<a id="single_image">
    <img src="@Html.Content("~/Content/pic" + model.pictureID + ".jpg")" />
</a>

РЕДАКТИРОВАТЬ

Если вы не можете использовать графический контроллер, я бы рекомендовал вашему PictureController с действием Index вернуть ActionResult

public ActionResult Image(int id)
{
    var dir = Server.MapPath("/Pictures");
    var path = Path.Combine(dir, id + ".jpg");
    return base.File(path, "image/jpeg");
}

Однако это замедлит ваши запросычерез прямой доступ к файлу .jpg.

...