将图像从控制器传递到视图

时间:2018-09-17 06:51:59

标签: c# asp.net-mvc

我正在尝试将图像从控制器传递给视图,例如:

控制器:

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

有人可以指导吗?

1 个答案:

答案 0 :(得分:2)

Bitmap实例传递到未显示任何图像的剃刀视图,因为超文本传输​​协议,如果要显示图像,则可以使用img标签。

型号:

您可以尝试使用byte数组属性imageBuffer来携带图像数据。

public byte[] imageBuffer { get; set; }

控制器:

使用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 data

<img src="@String.Format("data:image/png;base64,{0}",Convert.ToBase64String(Model.imageBuffer))" />

引用链接

what does this mean ? image/png;base64?