我有一个跟随的动作方法:
public ActionResult CreateNKITemplate(int id)
{
var goalcard = createNKIRep.GetGoalCardByID(id);
createNKIRep.CreateTemplate(goalcard);
return View();
}
此操作方法将在我的GoalCard实体中创建一个新的GoalCard对象,这意味着它将基本生成一个ID。
在CreateTemplate内部操作方法我想删除return View();
并添加return RedirectToAction
,以便重定向到已创建的新GoalCard对象ID
我想将新的GoalCard对象ID重定向到:
public ActionResult Edit(int id)
{
// code..
}
我该怎么做?
基本上:复制并创建一个新的Object,然后将新的对象id重定向到以Id为参数的编辑操作方法。
更新
接受的答案解决方案:
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
}
提前致谢!
答案 0 :(得分:3)
嗯,RedirectToAction
的定义是。
protected internal RedirectToRouteResult RedirectToAction(
string actionName,
string controllerName,
Object routeValues
)
所以我们只是填写你的价值观。
RedirectToAction(
"Edit", // Action name
"GoalCardController", // Controller name
new { id = gcId } // Route values
)
请注意,上面的代码假定您的控制器名为GoalCardController
,并且id存储在名为gcId
的变量中。
答案 1 :(得分:1)
public ActionResult CreateNKITemplate(int id)
{
var goalcard = createNKIRep.GetGoalCardByID(id);
createNKIRep.CreateTemplate(goalcard);
return RedirectToAction("Edit", new { id = id});
}
这将重定向您并将id作为参数,您可以以相同的方式添加多个参数,只需“,”除以。
如果您愿意,您还可以通往另一个控制器的路径。