【发布时间】:2011-05-07 17:58:37
【问题描述】:
我们的数据库中有一些图像,并希望在视图中显示它们。我找到了两种方法来做到这一点 - 第一种:我们在控制器中创建从数据库中获取图像并返回 FileContentResult 的操作方法:
public ActionResult GetImage( int id )
{
var imageData = ...get bytes from database...
return File( imageData, "image/jpg" );
}
查看代码:
<img src='<%= Url.Action( "GetImage", "image", new { id = ViewData["imageID"] } ) %>' />
第二种方式是使用HttpHandler:
public void ProcessRequest(HttpContext Context)
{
byte [] b = your image...;
Context.Response.ContentType = "image/jpeg";
Context.Response.BinaryWrite(b);
}
查看代码:
<img src="AlbumArt.ashx?imageId=1" />
第一个问题是实现此功能最有效(工作更快)的方法是什么(以及为什么它工作得更快)?
第二个问题 - 当我们第一次调用动作方法返回这个视图时,有没有办法将图像直接放入我们的视图中?我的意思是,在操作方法中,我们从数据库中获取图像列表并将它们作为列表传递给视图,并在视图中使用以下代码:
<%=Html.Image(Model[i])%>
该代码必须直接从模型中将图像放入视图中。
【问题讨论】:
-
您是否考虑将图像文件放在数据库之外?
-
是的,我将大部分图像放在文件系统中,但我对上述解决方案感兴趣。
标签: c# asp.net-mvc image