我有控制器:
Controller A
{
public ActionResult ExecuteSomeStuff()
{
....use TempData
returns a View("StuffMade", SomeModel);
}
}
和
Controller B
{
public ActionResult DoStuff()
{
...fill up TempData
returns RedirectToAction("ExecuteSomeStuff", "A");
}
}
问题是控制器A上的ExecuteSomeStuff方法执行了两次。 我不需要实际的重定向,我只是希望为DoStuff方法返回ExecuteSomeStuff方法的结果(视图)。 我不想在控制器B中引用控制器A,以便直接调用该方法。
如果没有对控制器B中的控制器A进行物理重定向或新引用,有没有办法做到这一点?
答案 0 :(得分:0)
如果我正确理解你,而不是RedirectToAction
,你可以从控制器B返回ExecuteSomeStuff View
。你需要能够设置Model
通过从控制器B进入视图。因此,您可能仍需要参考控制器A中使用的方法。
Controller B:
{
public ActionResult DoStuff()
{
...fill up TempData
//set the model then Return the View with the Model passed in
return View("ExecuteSomeStuff","A",SomeModel);
}
<强>更新强>
这将查找与 ExecuteSomeStuff 操作同名的View
,而不实际输入 ExecuteSomeStuff 操作。如果您的View具有不同的名称,您可以明确指定要返回的视图,如下所示:
return View("../A/theCorrectView.aspx", model);