RedirectToAction внутри метода действия, который создает новый объект в объекте в MVC
У меня есть метод действия, который заключается в следующем:
public ActionResult CreateNKITemplate(int id)
{
var goalcard = createNKIRep.GetGoalCardByID(id);
createNKIRep.CreateTemplate(goalcard);
return View();
}
Этот метод действия создаст новый объект GoalCard внутри моего объекта GoalCard, что означает, что он в основном будет генерировать идентификатор.
Внутри CreateTemplate метод действия, который я хочу удалить return View();
и добавить return RedirectToAction
поэтому он перенаправляет на новый идентификатор объекта GoalCard, который был создан
Я хочу перенаправить новый идентификатор объекта GoalCard на:
public ActionResult Edit(int id)
{
// code..
}
Как я могу это сделать?
В основном: скопируйте и создайте новый объект, а затем перенаправьте новый идентификатор объекта в этот метод действия редактирования, который принимает идентификатор в качестве параметра.
ОБНОВИТЬ:
Принятый ответ решение:
public ActionResult CreateNKITemplate(int id)
{
var goalcard = createNKIRep.GetGoalCardByID(id);
var copygoalcard = createNKIRep.CreateTemplate(goalcard);
var GoalCardCopyID = copygoalcard.Id;
return RedirectToAction(
"Edit", // Action name
"CreateNKI", // Controller name
new { id = GoalCardCopyID }); // Route values
}
Заранее спасибо!
2 ответа
Ну, определение для RedirectToAction
является.
protected internal RedirectToRouteResult RedirectToAction(
string actionName,
string controllerName,
Object routeValues
)
Поэтому мы просто заполняем ваши ценности.
RedirectToAction(
"Edit", // Action name
"GoalCardController", // Controller name
new { id = gcId } // Route values
)
Обратите внимание, что приведенный выше код предполагает, что ваш контроллер называется GoalCardController
и что идентификатор хранится в переменной с именем gcId
,
Вы просите об этом?
public ActionResult CreateNKITemplate(int id)
{
var goalcard = createNKIRep.GetGoalCardByID(id);
createNKIRep.CreateTemplate(goalcard);
return RedirectToAction("Edit", new { id = id});
}
Это перенаправит вас и даст идентификатор в качестве параметра, вы можете добавить несколько параметров таким же образом, просто разделив их на ",".
Вы также можете указать путь к другому контроллеру, если хотите.