我是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)?
你有两个选择:
@Html.Raw(imgSrc)
,因此它不会逃避base64字符串。如果你的图像很大,也许第一个选择更好。此外,所有浏览器可能都不支持数据网址。
你可以从这段代码中显示图像
<img style="max-width:100px; max-height:100px;" src="data:image/*;base64,@(Convert.ToBase64String(imgSrc))">