Hello StackOverflow社区。 我的MVC(代码优先)数据库项目中的图像上传存在问题。
我可以成功将图像和代码路径上传到数据库。 尽管如此,编辑这些值会使我返回null。
这是我的创建控制器,它成功上传图像
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "IDProduto,Nome,Descricao,Preco,IVA,Fotografia,Peso,Stock,Active,CategoriaFK")] Produto produto, HttpPostedFileBase file)
{
if (ModelState.IsValid)
{
if (file != null)
{
string FileName = Path.GetFileName(file.FileName);
string FullPath = Server.MapPath("~/Content/Imagens_Produto/") + FileName;
file.SaveAs(FullPath);
produto.Fotografia = FileName;
}
db.Produtos.Add(produto);
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.CategoriaFK = new SelectList(db.Categoria, "CategoriaID", "Nome", produto.CategoriaFK);
return View(produto);
}
这是我的编辑无法更改我的图像并返回零点异常。
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit([Bind(Include = "IDProduto,Nome,Descricao,Preco,IVA,Fotografia,Peso,Stock,Active,CategoriaFK")] Produto produto, HttpPostedFileBase file)
{
if (ModelState.IsValid)
{
string FileName = Path.GetFileName(file.FileName);
string FullPath = Server.MapPath("~/Content/Imagens_Produto/") + FileName;
file.SaveAs(FullPath);
produto.Fotografia = FileName;
db.Entry(produto).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.CategoriaFK = new SelectList(db.Categoria, "CategoriaID", "Nome", produto.CategoriaFK);
return View(produto);
}
这是我在创建和编辑视图中的字段
<div class="form-group">
@Html.LabelFor(model => model.Fotografia, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="editor-field">
<input id="Fotografia" title="Upload de imagem" type="file" name="file" class="form-control" />
</div>
</div>
我该如何解决这个问题? 提前致谢! 干杯
答案 0 :(得分:0)
您的实体未从数据库加载,您应该使用&#39;附加&#39;进入前的方法&#39;方法
db.Produtos.Attach(produto);
db.Entry(produto).State = EntityState.Modified;
db.SaveChanges();