2016-11-02 7 views
-2

У меня есть стандарт (CRUD генерироваться) функция удаленияКак я могу опубликовать witin контроллера для функции удаления?

// 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. Думаю, я должен сделать пост в контроллере, но как?

ответ

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 ничего не возвращает. Таким образом, ваш метод вызова должен вернуть ответ (если тип возвращаемого метода не является недействительным)

+0

УдалитьConfirmed никогда не вызывается. Когда он используется? Безопасно ли выполнять функцию Delete, подобную этой, без [HttpPost] и [ValidateAntiForgeryToken]? – Xtreme

+0

Вы не вызываете напрямую частный метод DeletePost? Он будет вызываться из другого метода (например: метод DeleteConfirmed action) – Shyju

+0

Извините, но я не понимаю. Вы вызываете функцию DeletePost из вашего оператора if, но никогда не DeleteConfirmed. Но вы вызываете DeletePost из DeleteConfirmed. Должен ли я использовать DeleteConfirmed (postId)? – Xtreme