c# - 无法在 asp.net View 中显示来自数据库的图像

标签 c# asp.net-mvc entity-framework

我不知道为什么,但我无法在我的 View 中显示来 self 的数据库的图像。它以适合图像的分辨率出现,但基本上是透明的。我不确定我保存图像的方式是否有误(不应该)或者是否有显示内容。如果我的问题太基础了,我很抱歉,但我比我必须做的更多:(

这是问题的屏幕截图:enter image description here

属性值: src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAADhCAYAAAByfIirAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAANL5JREFUeNrsnQl8VNXZ/8/MZJIJ2UMWIAkJCWFLwhpWAQEBKasoBkUUEBBpq7Xaoi34V2yp/PU="

这是我的模型的外观:

    public int CompId { get; set; }
    public byte[] ImageData { get; set; }
    [NotMapped]
    public HttpPostedFileBase UploadImage { get; set; }
    [NotMapped]
    public string ImageBase64 => System.Convert.ToBase64String(ImageData);
    public string CompanyName { get; set; }
    public string CompanyAddress { get; set; }

操作方法:

public ActionResult Create([Bind(Include = "CompId,ImageData,CompanyName,CompanyAddress,CompanyCountry,CompanyCity,CompanyPostalCode,CompanyPhoneNumber,EmailCA")] Company company, HttpPostedFileBase UploadImage)
        {
            if (ModelState.IsValid)
            {
                byte[] buf = new byte[UploadImage.ContentLength];
                UploadImage.InputStream.Read(buf, 0, buf.Length);
                company.ImageData = buf;

                db.Companies.Add(company);
                db.SaveChanges();
                return RedirectToAction("Index");
            }

            return View(company);
        }

和 View :

 @model eksp.Models.Company

@{
    ViewBag.Title = "Index";
}

<h2>Details</h2>

<div>
    <h4>Company</h4>
    <hr />
    <dl class="dl-horizontal">
        <dt>
            @Html.DisplayNameFor(model => model.ImageData)
        </dt>

        <dd>
            <img src="data:image/png;base64,@Model.ImageBase64" />
        </dd>

我们将不胜感激。

最佳答案

猜猜你显示的值是什么:

src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAADhCAYAAAByfIirAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAANL5JREFUeNrsnQl8VNXZ/8/MZJIJ2UMWIAkJCWFLwhpWAQEBKasoBkUUEBBpq7Xaoi34V2yp/PU="

惊喜:300x225 空 PNG 图像(透明背景):

enter image description here

因此,如果您希望在浏览器中看到它们,请确保将一些真实图像放入数据库中。否则,您在浏览器中得到的只是 300x225 像素的空白(这正是我们从您的屏幕截图中看到的内容)。

话虽如此,您的代码没问题,但您正在使用的数据让您认为存在问题。

关于c# - 无法在 asp.net View 中显示来自数据库的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41513949/

相关文章:

c# - 代码首次尝试创建数据库时出现异常

c# - 提高性能但需要维护的计算字段 (EF)

c# - 使用对象列表连接表

c# - Entity Framework 6 中的一对多关系

c# - 在创建具有安装屏蔽限制的应用程序时,有没有办法通过 Smartscreen 过滤器?

c# - 与 C# 中的显式类型相比,使用 var 有什么优势?

c# - ASP.net MVC4 中 Html.BeginForm 中多个按钮的问题

c# - 如何防止 MVC Controller 中的并发访问?

c# - 当属性具有相同的 DisplayName 时,PropertyGrid 选择错误?

c# - 从 appsettings.json 获取 ConnectionString,而不是在 .NET Core 2.0 应用程序中硬编码