如何从mvc3中删除数据

时间:2014-03-29 10:28:47

标签: asp.net-mvc-3

我想删除数据。这是我的代码。当我试图删除数据时,它会给出错误。

这是我的代码

  public ActionResult delete(Int32 id)
    {
        var contentdelete = (from m in _db.tb_content
                             where m.id == id
                             select m).First();
        return View(contentdelete);
    }
    public ActionResult delete(MvcNTL.Models.tb_content contentdelete)
    {
        var content = (from m in _db.tb_content
                       where m.id == contentdelete.id
                       select m).First();
        if (!ModelState.IsValid)
            return View(content);
        _db.ApplyCurrentValues(content.EntityKey.EntitySetName, contentdelete);
        _db.SaveChanges();
        return RedirectToAction("index");
    }

这是错误

控制器类型'ContentController'上的当前动作'delete'请求在以下操作方法之间是不明确的: 类型为MvcNTL.Controllers.ContentController的System.Web.Mvc.ActionResult delete(Int32) 类型为MvcNTL.Controllers.ContentController的System.Web.Mvc.ActionResult delete(MvcNTL.Models.tb_content)

3 个答案:

答案 0 :(得分:1)

您需要在第二个删除控制器中添加[HTTPPOST]。他们现在都得到控制器,所以mvc不知道要选哪一个。

答案 1 :(得分:1)

在同一个HTTP动词可访问的控制器上,不能有2个具有相同名称的操作。你应该用[HttpPost]属性装饰第二个:

[HttpPost]
public ActionResult delete(MvcNTL.Models.tb_content contentdelete)
{
    var content = (from m in _db.tb_content
                   where m.id == contentdelete.id
                   select m).First();
    if (!ModelState.IsValid)
        return View(content);
    _db.ApplyCurrentValues(content.EntityKey.EntitySetName, contentdelete);
    _db.SaveChanges();
    return RedirectToAction("index");
}

这使得实际执行删除的第二个操作只能使用POST动词访问。第一个动作可以通过GET动词访问,并将呈现表格。

答案 2 :(得分:0)

 [HttpPost]
 public ActionResult delete(MvcNTL.Models.tb_content contentdelete)
 {
var content = (from m in _db.tb_content
               where m.id == contentdelete.id
               select m).First();
if (!ModelState.IsValid)
    return View(content);
_db.ApplyCurrentValues(content.EntityKey.EntitySetName, contentdelete);
_db.SaveChanges();
return RedirectToAction("index");
}