我是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()
的方式是否正确。我搜索了任何一个例子,但我可以找到任何一个。
所以我的问题是:我正确使用它吗?
答案 0 :(得分:2)
要做到这一点,许多人会创建一个封装此requiredFunction
的服务,并通过它的接口将服务注入到两个控制器中
答案 1 :(得分:1)
使用此
var ctrl= new MyController();
ctrl.ControllerContext = ControllerContext;
//call action
return ctrl.Action();