如何在视图中渲染图像。 image = byte []的值。 asp.net mvc

时间:2011-03-23 18:01:27

标签: c# asp.net-mvc image

我在"image"类型的数据库中有图像值。 在视图中保存在byte[]类型下 我想在我的asp.net mvc视图中将其显示为图像。最好的就像图像一样。 如果图像保存在Model.ImageData.

下,则为值

我试图像这样解决它:

<img height="450px" width="330px" src="<%= historyItem.ImageData %>" alt="image" />

但它不起作用。 怎么做?

4 个答案:

答案 0 :(得分:6)

您的方法存在的问题是,您已将图片数据作为视图模型的一部分包含在内,但<img>标记需要src属性中的网址。有些浏览器支持将base64 embedded images放在HTML中,但我建议您避免这种方法,因为标记的数量可能会增加。

所以你需要一个控制器动作来提供图像:

public ActionResult Image()
{
    byte[] imageData = ...
    return File(imageData, "image/png");
}

然后将src标记的img属性指向此控制器操作:

<img height="450px" width="330px" src="<%= Url.Action("Image") %>" alt="image" />

答案 1 :(得分:0)

您必须创建一个单独的操作方法,该方法返回FileResult

Stackoverflow上应该有很多不同的问题。从这里尝试一下:
https://stackoverflow.com/search?q=fileresult+mvc+image

答案 2 :(得分:0)

可能存在嵌入图像的解决方案。但除此之外,您还需要创建另一个动作来下载图像:

<img height="450px" width="330px" 
     src="<%: Url.Action("Image", "Controller", new { id=Model.ImageId }) %>"
     alt="image" />

在控制器类中:

public FileResult Image(int id)
{
  byte[] imageData = getImageBytes(id);
  string mimeType = getMimeType(id);

  return new FileStreamResult(new System.IO.MemoryStream(imageData), mimeType );
}

答案 3 :(得分:0)

我不是ASP.NET的专家。那就是说,你能把它投射到图像或位图吗?

在WinForm或后面的ASP.NET代码中,它看起来像......

Image img = historyItem.ImageData as Image;
if (img != null) {
  // Do Something
}

〜乔