上传图像失败了MVC

时间:2017-07-09 17:44:08

标签: asp.net asp.net-mvc code-first

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>

我该如何解决这个问题? 提前致谢! 干杯

1 个答案:

答案 0 :(得分:0)

您的实体未从数据库加载,您应该使用&#39;附加&#39;进入前的方法&#39;方法

 db.Produtos.Attach(produto);
 db.Entry(produto).State = EntityState.Modified;
 db.SaveChanges();