如何使用ActionInvoker.InvokeAction? - ASP.Net

时间:2012-12-18 15:53:32

标签: asp.net-mvc asp.net-mvc-3

我是MVC ASP.NET的新手,需要在另一个控制器的动作中从一个控制器调用一个动作。在那里,我创建了控制器的对象,并调用了我需要的操作,如下所示,

controllerOne co = new controllerOne();

co.requiredFunction();

但是我的一位资深人士建议我不要使用这种方法,这会杀死MVC模式使用其给定的ActionInvoker.InvokeAction()函数来调用其他控制器的功能,我现在正在使用如下,

public class HomeController : Controller
{

    this.ActionInvoker.InvokeAction(new System.Web.Mvc.ControllerContext(
        this.ControllerContext.RequestContext, new controllerOne()), 
        "requiredAction");
}

这很好用,但我不知道我使用ActionInvoker.InvokeAction()的方式是否正确。我搜索了任何一个例子,但我可以找到任何一个。

所以我的问题是:我正确使用它吗?

2 个答案:

答案 0 :(得分:2)

要做到这一点,许多人会创建一个封装此requiredFunction的服务,并通过它的接口将服务注入到两个控制器中

答案 1 :(得分:1)

使用此

var ctrl= new MyController();
ctrl.ControllerContext = ControllerContext;
//call action
 return ctrl.Action();