【发布时间】:2017-01-07 04:47:09
【问题描述】:
我不知道为什么,但我无法在我的视图中显示我的数据库中的图像。它以适合图像的分辨率出现,但它基本上是透明的。我不确定我保存图像的方式是否有问题(不应该),或者它是否有显示。如果我的问题太基本了,我很抱歉,但我坚持的比我必须的要多:(
属性值: src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAADhCAYAAAByfIirAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANL5JREFUeNrsnQl8VNXZ/8/MZJIJ2UMWIAkJCWFLwhpWAQEBKasoBkUUEBBPUq7Xpi>
这是我的模型的外观:
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);
}
还有观点:
@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>
任何帮助将不胜感激。
【问题讨论】:
-
检查生成的 HTML 页面源代码:您看到 img src 属性值中的预期内容了吗?
-
另外,在cshtml中放置一个断点并检查
@Model.ImageData数组。你那里有一些数据吗? -
@uncoder 。我刚刚在问题中添加了这个值。
-
@Alexei ,是的,有一个值。我可以在数据库中看到它
-
@RobertRoss,试试我的答案。
标签: c# asp.net-mvc entity-framework