当前位置: 代码迷 >> ASP.NET >> 学习MVC中,碰到有关问题:新增删除有效,更新无效,求解~
  详细解决方案

学习MVC中,碰到有关问题:新增删除有效,更新无效,求解~

热度:5189   发布时间:2013-02-25 00:00:00.0
学习MVC中,碰到问题:新增删除有效,更新无效,求解~~
视图的部分代码:
HTML code
@using (Html.BeginForm("Edit", "Admin")){     @Html.EditorForModel()    <input type="submit" value="保存" />    @Html.ActionLink("返回", "Index")}


提交表单之后,执行的是Admin控制器里的Edit方法。如下:


Admin控制器中的Edit方法:
C# code
[HttpPost]        public ActionResult Edit(Product product)        {            if (ModelState.IsValid)            {                repository.SaveProduct(product);                TempData["message"] = string.Format("{0} 保存成功", product.Name);                return RedirectToAction("Index");            }            else            {                // there is something wrong with the data values                return View(product);            }        }



方法中,调用了SaveProduct方法,该方法在实现某个接口的类中:
C# code
public void SaveProduct(Product product)        {            if (product.ProductID == 0)            {                context.Products.Add(product);            }            else  //else  我自己加的,我看的MVC资料里没有这个else语句块            {                //context.Products.Attach(product);  //这句更新的该怎么写呢?还是说这句压根不用写?            }            context.SaveChanges();                   }


问题:

经过测试,新增是没问题的。但是更新无效。调试发现,更新操作,验证也是通过了,会执行到SaveProduct方法中的else部分。
并且,由于在控制器中有返回操作结果提示,可以发现,点更新后,给出的提示,商品XXX保存成功。这里的XXX,也是修改后的商品,只是没有保存到数据库中去而已。

求解,这句更新的语句该怎么写~~

------解决方案--------------------------------------------------------
你需要根据ID从库中先查出那条记录,然后通过页面更新后的Product来给该记录赋值更新,然后直接context.SaveChanges();
就可以了
------解决方案--------------------------------------------------------
楼上说的对。
你需要先查出来这个model然后在对这个model做更新
  相关解决方案