我在"image"
类型的数据库中有图像值。
在视图中保存在byte[]
类型下
我想在我的asp.net mvc视图中将其显示为图像。最好的就像图像一样。
如果图像保存在Model.ImageData.
我试图像这样解决它:
<img height="450px" width="330px" src="<%= historyItem.ImageData %>" alt="image" />
但它不起作用。 怎么做?
答案 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
}
〜乔