我正在尝试将图像从 Controller 传递到 View :
Controller :
model.image = AspectRatio(String.Format("~" + i.ImageUrl));
return View(model);
型号:
public Bitmap image { get; set; }
查看:
@model OnlineStore.ViewModels.ItemVM
<div>
@Model.image
<div>
代码没有抛出错误,但浏览器不显示图像,而是显示以下文本行:
System.Drawing.Bitmap
有人可以指导一下吗?
最佳答案
将 Bitmap
实例传递给没有显示任何图像的 razor View ,因为超文本传输协议(protocol),如果您想显示图像,您可以使用 img
标签。
型号:
您可以尝试使用byte
数组属性imageBuffer
来携带您的图像数据。
public byte[] imageBuffer { get; set; }
Controller :
使用ImageConverter
让Bitmap
对象图像数据转为byte[]
ImageConverter converter = new ImageConverter();
Bitmap imageObj = AspectRatio(String.Format("~" + i.ImageUrl));
model.imageBuffer = (byte[])converter.ConvertTo(imageObj, typeof(byte[]));
return View(model);
查看:
Convert.ToBase64String
函数让 byte[]
转换为 Base64 字符串。 img标签支持通过base64
显示图像,只需设置src
属性并在其中声明data:image/png;base64
即可。
因为img
标签支持base64数据
<img src="@String.Format("data:image/png;base64,{0}",Convert.ToBase64String(Model.imageBuffer))" />
引用链接
关于c# - 将图像从 Controller 传递到 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52362212/