我们在数据库中有一些图像,并希望在视图中显示它们。我发现双向做到这一点 - 第一:我们创建控制器的操作方法,从数据库中获取的图像,并返回FileContentResult:ASP.NET MVC:从数据库中加载图像并在视图中显示它们
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" />
第一个问题是什么是最有效的(工作更多更快)的方式来实现这个功能(以及为什么它工作得更快)?
第二个问题 - 当我们第一次调用action方法返回这个视图时,是否有一种方法可以直接在视图中显示图像?我的意思是,在操作方法,我们从数据库中获取图像的列表,并考虑通过他们的名单,并考虑到使用此代码:
<%=Html.Image(Model[i])%>
代码必须把图像转换成视图直接从模型。
你是否考虑将图像文件放在db外? – 2010-11-10 11:57:11
是的,我将大部分图像放置在文件系统中,但我对上述解决方案感兴趣。 – Kai 2010-11-10 13:04:22