繁体   English   中英

如何在视图中渲染图像。 图片的值= byte []。 ASP.NET MVC

[英]how to render image in view. value of image = byte[]. asp.net mvc

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

我试图像这样解决它:

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

但它不起作用。 怎么做?

这种方法的问题在于,您已将图像数据作为视图模型的一部分包括在内,但<img>标记在src属性中需要一个URL。 某些浏览器支持将base64嵌入式图像放置在HTML内,但是我建议您避免使用这种方法,因为标记量可能会增加。

因此,您将需要一个提供图片的控制器操作:

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

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

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

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

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

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

<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 );
}

我不是ASP.NET的专家。 也就是说,您可以将其转换为图像或位图吗?

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

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

〜乔

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM