将操作返回给其他控制器

时间:2016-11-25 07:36:36

标签: c# asp.net controller

我想将一个Action返回给另一个Controller

示例:我有2个控制器:

[Route("myurl"]
public class HomeController : Controller
{
    public ActionResult Action1()
    {
        if (...)
           {
              return Action2(); //working fine i will keep my route
           }
        else
           {
              return OtherController.Action3(); //Don't know how to do it here.
           }
    }
    public ActionResult Action2()
    {
        return View();
    }
}

public class OtherController : Controller
{
    public ActionResult Action3()
    {
        return View();
    }
}

如果Action在同一个控制器内,但希望将Action1从HomeController返回到Other3的Action3,它可以正常工作。 我想保持相同的路线(不是重定向到其他路线)。

有什么想法吗?

4 个答案:

答案 0 :(得分:1)

您是否尝试过使用 RedirectToAction

return RedirectToAction("ACTION_NAME", "CONTROLLER_NAME", new { area = "" });

答案 1 :(得分:1)

我发现了:

我需要像那样回来:

return DependencyResolver.Current.GetService<OtherController>().Action3();
[Route("myurl"]
public class HomeController : Controller
{
    public ActionResult Action1()
    {
        if (...)
           {
              return Action2(); //working fine i will keep my route
           }
        else
           {
              return DependencyResolver.Current.GetService<OtherController>().Action3();
           }
    }
    public ActionResult Action2()
    {
        return View();
    }
}

答案 2 :(得分:0)

返回RedirectToAction(“ActionName”,“ControllerName”);

答案 3 :(得分:0)

您可以通过调用控制器类protected internal RedirectToRouteResult RedirectToAction(string actionName, string controllerName);的以下方法来执行此操作。根据您的要求,else块中的代码看起来像base.RedirectToAction("ACtion3","OtherController");