【发布时间】:2021-05-14 08:30:01
【问题描述】:
我想寻求帮助,你看我有一个更新方法,当图像上传输入为空时不起作用。这不应该是这种情况,因为并非始终更新字段。我正在为我的后端使用实体框架。
这是来自控制器的代码
public ActionResult Edit(int id, ClearanceDB clearanceDB)
{
try
{
string fileName = Path.GetFileNameWithoutExtension(clearanceDB.ImageFile.FileName);
string extension = Path.GetExtension(clearanceDB.ImageFile.FileName);
fileName = fileName + DateTime.Now.ToString("yymmssfff") + extension;
clearanceDB.picture = "/Image/" + fileName;
fileName = Path.Combine(Server.MapPath("/Image/"), fileName);
clearanceDB.ImageFile.SaveAs(fileName);
using (ClearanceModels dbModel = new ClearanceModels())
{
dbModel.Entry(clearanceDB).State = EntityState.Modified;
//dbModel.Entry(clearanceDB).Property(p => p.ImageFile).IsModified = false;
dbModel.SaveChanges();
}
// TODO: Add update logic here
return RedirectToAction("Index");
}
catch
{
//if (clearanceDB.ImageFile == null)
//{
// dbModel.Entry(clearanceDB).Property(I => I.ImageFile).IsModified = false;
//}
return View();
}
}
正如您在评论部分看到的那样,我尝试使用“IsModified”属性来阻止图像上传,但可惜它不起作用。我还尝试检查图像是否为空,但它也不起作用。由于我已经尝试过“IsModified”属性,这是我发现的最常见的解决方案,我不知道还能尝试什么。其他解决方案太复杂了,我只需要更新即可,无需上传新图像。感谢您提供任何帮助。
这是ClearanceDB类Model,图片是唯一导致这个问题的字段所以我没有放其他字段。
[Display(Name = "Picture")]
//[Required(ErrorMessage = "Required!")]
public string picture { get; set; }
ublic HttpPostedFileBase ImageFile { get; set; }
视图中的代码(如果有帮助)
<img src="@Html.DisplayFor(model => model.picture)" height="200" width="250" />
<input type="file" name="ImageFile" value="@Html.DisplayFor(model => model.picture)">
【问题讨论】:
-
上传输入为空时 - 什么意思?哪些字段是空的?也许您必须向我们展示 ClearanceDB 类。您要更新哪些字段?
-
您好,我已经包含了 ClearanceDB 类。至于您的问题,是图片上传为空时,这意味着除非上传新图片,否则更新将不起作用。这不会发生在其他领域。
标签: .net asp.net-mvc entity-framework file-upload