我已经使用控制器(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:抱歉,我无法发布任何图片,但可以通过电子邮件发送。
答案 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>
如果您已经开始使用图片控制器,那么我建议让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文件访问而变慢。