2012-06-12 71 views
1

我目前正在使用的webApp需要我将照片作为byte[]存储在数据库中。然后它需要我将它们拉出并在视图中显示它们。我创建了一个photoContainer,它包含位图而不是byte[]并将其传递给视图。但我似乎无法弄清楚如何从那里显示它。我已经尝试将源设置为model.Image,但这不起作用。无论如何,在视图中我的模型中显示一个位图?在剃刀模型中显示位图

在此先感谢。

回答

2

在一个控制器发生这种

public FileResult GetImg(int id) 
    {      
     var image = db.Categories.First(m => m.CategoryID == id).Picture; 

     byte[] imageData; 
     if(image != null) 
     { 
      imageData = image.ToArray(); 
      return File(imageData, image.contentType); 
     } 
     else 
     { 
      return null; 
     } 
    } 

在您看来这个地方

<img src="@Url.Action("GetImg", "ControllerTheActionAboveIsPlacedIn", new { id = Model.ImageId})" /> 
+0

这种解决方案需要一个新的数据库调用每个图像进行。视图级别的模型已经包含byte []。现在没有更高效的方式来渲染图像,而不需要返回每个图像的数据库? – ElHaix

+0

您可以使用这种方法,但在IE7及以下版本中不起作用。 IE8也是有限的。 http://stackoverflow.com/questions/2644542/outputting-a-byte-arrain-into-the-src-attribute-of-an-img-tag/2644598#2644598 –