2013-05-07 4 views
1

У меня есть действие удаления, которое удаляет элемент. Я хочу перенаправить на действие родителя удаленного элемента после удаления этого элемента.MVC4 перенаправляет родительский элемент после удаления дочернего элемента

// The parent Action 
    public ActionResult ParentAction(int id = 0) 
    { 
     Parent parent = LoadParentFromDB(id); 
     return View(parent); 
    } 

    // Delete action of the child item 
    public ActionResult Delete(int id, FormCollection collection) 
    { 
     DeleteChildFromDB(id); 
     return RedirectToParentAction(); 
    } 

Как я могу это достичь?

ответ

7

Используйте метод RedirectToAction и передать идентификатор родительского объекта

// Delete action of the child item 
public ActionResult Delete(int id, FormCollection collection) 
{ 
    var parent_id = queryTheParentObjectId(); 
    DeleteChildFromDB(id); 
    return RedirectToAction("ParentAction", new {id=parent_id}) 
} 

Вы создали свой собственный ответ, и кажется, метод, который вы хотите звонить в другой контроллер. Вам не нужно добавлять имя контроллера в качестве параметра. Вы можете иметь это:

// instead of doing this 
// return RedirectToAction("ParentAction", 
// new { controller = "ParentController", id = parent_id }); 
// 
// you can do the following 
// assuming ParentConroller is the name of your controller 
// based on your own answer 
return RedirectToAction("ParentAction", "Parent", new {id=parent_id}) 
+0

Родитель действительно другой контроллер, то контроллер пары устраняются как вы сказали, и отлично работает. Еще раз спасибо. – Stacked

+0

Sweet, добро пожаловать –

0

Спасибо @von против Я изменил свой ответ немного и он работает:.

// Delete action of the child item 
public ActionResult Delete(int id, FormCollection collection) 
{ 
    var parent_id = queryTheParentObjectId(); 
    DeleteChildFromDB(id); 
    return RedirectToAction("ParentAction", new { controller = "ParentController", id = parent_id }); 
} 
+0

Вам не нужно добавлять параметр контроллера, для этого есть перегрузка, см. Мой обновленный ответ. –

Смежные вопросы