我在从db获取的控制器中有相同的操作,例如具有名称,年龄,图像(byte [])的Employee。
所以我将信息存储在ViewBag中。然后在视图中,图像的特定代码是:
<img src="@ViewBag.Image" alt="Logo" />
但是当我看到我的回复内容时:
<img src="System.something.FileContentResult" alt="Logo" />
我看过很多例子从Controller中的特定Action获取FileContentResult,例如:
(该代码仅为示例)
public ActionResult GetEmployeeImage (int id){
byte[] byteArray = GetImageFromDB(id);
FileContentData file = new File (byteArray,"image/jpg");
return file;
}
然后使用:
渲染图像<img src="@Url.Action("GetEmployeeImage", "Home", new { id = ViewBag.Id })" alt="Em" />
但我不想那样,因为我已经拥有了这张照片。
如何将其呈现给View抛出ViewBag?
谢谢!
PD:Rendering image in a View是相同的,但没有结束
答案 0 :(得分:4)
一种可能性是使用data URI scheme。请记住,这只适用于支持它的浏览器。我们的想法是,您将图像数据作为base64字符串嵌入src
标记的img
属性中:
<img src="data:image/jpg;base64,@(Html.Raw(Convert.ToBase64String((byte[])ViewBag.Image)))" alt="" />
另一方面,如果您想要一个适用于所有浏览器的解决方案,则必须使用控制器操作来提供图像。因此,在初始请求中,仅获取员工的id,name和age属性,而不是图像。然后编写一个控制器操作,将employee id作为参数,查询数据库,获取相应的图像并将其作为文件结果返回。然后在视图内部将img标记的src属性指向此控制器操作。