在另一个控制器中调用公共功能?

时间:2011-05-02 11:05:45

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

这里有一些类似的问题,但没有一个问题得到解答。

我该怎么做,最好的方法?

每次我想使用它的函数时,我都可以创建另一个Controller类的新实例,但从长远来看这似乎很糟糕,我错了吗?

我应该让功能(例如UserController.GetAllUsers())共享吗?

1 个答案:

答案 0 :(得分:3)

我不建议在其他控制器上访问该方法。在ASP.NET MVC中,可以通过多种不同的方式(注入,工厂等)创建控制器,并且您不能保证您将模拟正在使用的任何机制。

相反,您应该将GetAllUsers方法分解为一个单独的类/方法,该方法获取返回其值所需的参数。然后,您可以将适当的值从两个控制器传递给该新类。

该类应该不了解ASP.NET MVC;你可以从控制器实例中传递它们。