使用jQuery Fancybox时,MVC3将图像文件作为字节数据返回

时间:2011-08-05 03:45:31

标签: asp.net-mvc-3 jquery-plugins fancybox

我已经使用控制器(Picture)和一个返回文件内容的动作方法(GetImage)构建了MVC3应用程序(在我的例子中是一个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插件应用于此图像并单击图像时,它会显示内部带有byte []数据的弹出窗口(当缺少文件mime类型时会出现这种情况)。

我做错了什么?

PS:抱歉,我无法发布任何图片,但可以通过电子邮件发送。

1 个答案:

答案 0 :(得分:0)

直接使用视图中的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>

修改

如果您已经开始使用图片控制器,那么我建议让PictureControllerIndex操作返回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文件访问而变慢。