在MVC中显示数据库中的图像

问题描述 投票:1回答:2

我是ASP.NET MVC Web开发的新手。

我想在SQL Server数据库的razor视图中以img标签显示图像。

在我的模型中,图像存储为字节数组:

public class Business
    {
        public string ID { get; set; }

        [Required]
        public string BusinessName { get; set; }

        public string City { get; set; }

        [Required]
        public string Description { get; set; }

        public byte[] LogoImage { get; set; }

    }

在控制器中我从db [varbinary(MAX)]列获取图像数据:

...
    LogoImage = (byte[])reader["LogoImage"]
...

在视图中我有一个标准的详细信息模板,我在其中放置以下代码:

@{
    var base64 = Convert.ToBase64String(model.LogoImage);
    var imgSrc = String.Format("data:image/gif;base64,{0}", base64);
}
<img src='@imgSrc' style="max-width:100px; max-height:100px;" />

所以,我真的在剃刀视图中挣扎,如果对待一个,则发生另一个错误。除图像外,其他属性均显示。

有人可以建议我如何在剃刀视图中显示图像?将图像填充为img src ='... long data ...'是否合适?如何从模型传递或访问数组?我是否必须将其转换为字符串@ Html.DisplayFor(model => model.LogoImage)?

c# sql-server asp.net-mvc image
2个回答
1
投票

你有两个选择:

  1. 创建一个Action,它返回图像的内容,并指向img标记src中的动作。此操作应使用“文件”结果类型。
  2. 从您的控制器,将您的图像编码为base64并使用您的src中的数据。也许在这里,你遇到的问题是你需要使用@Html.Raw(imgSrc),因此它不会逃避base64字符串。

如果你的图像很大,也许第一个选择更好。此外,所有浏览器可能都不支持数据网址。


0
投票

你可以从这段代码中显示图像

<img style="max-width:100px; max-height:100px;" src="data:image/*;base64,@(Convert.ToBase64String(imgSrc))">
© www.soinside.com 2019 - 2024. All rights reserved.