我们的数据库中有一些图像,想要在视图中显示它们。我找到了两种方法来实现这个目标 - 第一种:我们在控制器中创建一个动作方法,从数据库获取图像并返回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])%>
这段代码必须从模型中直接将图像放入视图。