从非控制器类调用控制器操作

时间:2015-11-16 11:25:55

标签: c# asp.net-mvc

有没有办法从常规C#类调用控制器操作,而不是控制器?

到目前为止我发现的所有内容都使用了redirectToAction,但这是控制器专有的。

2 个答案:

答案 0 :(得分:2)

控制器是一个类似于任何其他类的类,这意味着你可以这样做:

var homeController = new HomeController();

(假设你有你的项目引用设置,我在我的例子中不包括命名空间,因为我不知道你的是什么)

因此,您可以通过homeController变量执行该控制器的方法。但是,正如评论中指出的那样,这根本不是一个好的设计。我强烈建议你不要这样做。

应该从其他控制器或Web请求调用控制器。

答案 1 :(得分:0)

如果你想使用在某个地方用控制器动作编写的相同代码,我认为更好的选择是在Business层中有一个C#类,然后使用在任何需要时重复使用的相同功能。在控制器动作方法中,也有一个实例化的类,并调用调用的特定函数。

public class BAL.A
{
public void Method(){
/*Implementation here. */
}
}


using BAL;

Public Class HomeCOntroller{


public void Index(){

A objA=new A();
objA.Method();
}
}

我希望这有助于重用功能。