MVC Crud Operation Edit

时间:2017-04-24 08:03:41

标签: c# asp.net-mvc

我试图添加一个crud操作来编辑数据库中的项目,但是我得到了这个DbUpdateConcurrencyException。可能是什么问题? 提前谢谢。

控制器:

//MODAL POPUP FOR EDIT

public ActionResult EditItem()
{
  return PartialView();
}

//POST: EDIT ITEM

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult EditItem(H_Table item)
{
  db_connection.Entry(item).State = EntityState.Modified;
  db_connection.SaveChanges();
  return RedirectToAction("Index");
}

2 个答案:

答案 0 :(得分:0)

在数据库中添加要更新的表名。

public ActionResult EditItem(H_Table item)
{
            H_Table oldObj= db.H_Table.Find(item.ID);
            db.Entry(oldObj).CurrentValues.SetValues(item);
            db_connection.SaveChanges();
            return RedirectToAction("Index");
}

答案 1 :(得分:0)

基本上你必须首先检查你的模型是否有效,然后再进行更新操作:

public ActionResult EditItem(H_Table item)
{
    if(ModelState.IsValid)
    {
        using (var db = new YourDbContext())
        {
            db.Entry(item).State = EntityState.Modified;
            db.SaveChanges(); 
        }
        return RedirectToAction("Index");
    }
}

但是我建议您首先使用其Id找到该项目,然后通过从视图模型获取的内容填充同一类的对象,然后将其插入到数据库中。