在 MVC 中的实体中创建新对象的操作方法中的 RedirectToAction
本文关键字:对象 操作方法 RedirectToAction 新对象 MVC 实体 创建 | 更新日期: 2023-09-27 18:33:41
我有一个操作方法如下:
public ActionResult CreateNKITemplate(int id)
{
var goalcard = createNKIRep.GetGoalCardByID(id);
createNKIRep.CreateTemplate(goalcard);
return View();
}
此操作方法将在我的目标卡实体中创建一个新的目标卡对象,这意味着它基本上会生成一个 ID。
在创建模板操作方法中,我想删除return View();
并添加return RedirectToAction
以便它重定向到已创建的新目标卡对象 ID
我想将新的目标卡对象 ID 重定向到:
public ActionResult Edit(int id)
{
// code..
}
我该怎么做?
基本上:复制并创建一个新对象,然后将新对象 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
}
提前感谢!
嗯,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
的变量中。
你要求这个吗?
public ActionResult CreateNKITemplate(int id)
{
var goalcard = createNKIRep.GetGoalCardByID(id);
createNKIRep.CreateTemplate(goalcard);
return RedirectToAction("Edit", new { id = id});
}
这将重定向您并将 id 作为参数,您可以以相同的方式添加多个参数,只需除以","。
如果需要,您还可以尝试到另一个控制器的路径。