如何将控制器发布到删除功能?

时间:2016-11-02 15:28:45

标签: c# asp.net-mvc asp.net-mvc-4 controller crud

我有一个标准(CRUD生成)删除功能

// GET: Posts/Delete/5
        public ActionResult Delete(int? id)
        {
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
            Post post = db.Posts.Find(id);
            if (post == null)
            {
                return HttpNotFound();
            }
            return View(post);
        }

        // POST: Posts/Delete/5
        [HttpPost, ActionName("Delete")]
        [ValidateAntiForgeryToken]
        public ActionResult DeleteConfirmed(int id)
        {
            Post post = db.Posts.Find(id);
            db.Posts.Remove(post);
            db.SaveChanges();
            return RedirectToAction("Index");
        }

我想在控制器内调用这个

if (totalVotes <= 5 && voteValue == -1)
{
    Delete(postId); //NOT WORKING
}

但是这让我获得了删除GET功能。我猜我必须在控制器内做一个帖子,但是怎么做?

1 个答案:

答案 0 :(得分:0)

将删除代码移动到某个方法,并根据需要从多个方法中调用它。

public ActionResult DeleteConfirmed(int id)
{
    DeletePost(id);            
    return RedirectToAction("Index");
}

private void DeletePost(int id)
{
    Post post = db.Posts.Find(id);
    db.Posts.Remove(post);
    db.SaveChanges();            
}

以及同一控制器中的其他方法

if (totalVotes <= 5 && voteValue == -1)
{
    DeletePost(postId); 
}

请注意,DeletePost方法不会返回任何内容。所以你的调用方法必须返回一些响应(如果该方法的返回类型不是空的)