我已经将图像与其他信息一起存储在表中的一列,但是当检索关于帖子的整个信息时,我有三行显示图像。 我正在'断开img'图标。ASP.NET MVC:查看存储的图像作为字节[]从Db
型号:
public class Event
{
[Key]
public int Id { get; set; }
public string EventName { get; set; }
public byte[] EventPhoto { get; set; }
}
创建动作:
[Authorize]
[HttpPost]
public ActionResult Create(Event events, [Bind(Exclude = "EventPhoto")]EventController model)
{
if (ModelState.IsValid)
{
using (var database = new EventSpotDbContext())
{
byte[] imageData = null;
if (Request.Files.Count > 0)
{
HttpPostedFileBase poImgFile = Request.Files["EventPhoto"];
using (var binary = new BinaryReader(poImgFile.InputStream))
{
imageData = binary.ReadBytes(poImgFile.ContentLength);
}
}
events.EventPhoto = imageData;
database.Events.Add(events);
database.SaveChanges();
return RedirectToAction("Main");
}
}
return View(events);
}
输入视图:
@Html.LabelFor(m => m.EventPhoto)
<input type="file" name="Event" id="fileUpload" accept=".png,.jpg,.jpeg,.gif,.tif" />
显示屏操作:
public ActionResult DisplayImg(Event events)
{
var bdEvents = HttpContext.GetOwinContext().Get<EventSpotDbContext>();
var userImage = bdEvents.Users.Where(x => x.Id == (events.Id).ToString()).FirstOrDefault();
return new FileContentResult(events.EventPhoto, "image/jpg");
}
显示视图:
<div class="container">
<article>
<p> @Model.EventName </p>
<img src="@Url.Action("DisplayImg", "Event")" />
</article>
任何解决我的问题?
你'@ Url.Action(“DisplayImg”,“事件”)'不会将任何数据传递到' DisplayImg()'方法和'Event events'参数只是一个默认的实例 - 'EventPhoto'的值是'null'!但是这个方法不应该包含一个参数,它无论如何都是一个模型 - 它需要(比如说)int ID',其中'ID'是'Event'的标识符,并且你从数据库中获得'Event'。 (如果你确实尝试将'Event'的属性传递给该方法,它肯定会因为查询字符串限制而抛出异常) –
你是否懒得阅读注释 - 你仍然不会传递任何东西给方法! –
对不起,这是帖子中的一个错字,但我已经在代码中修复了这个错误,但仍然无法正常工作。 是这样它需要是: ? –