从C#类调用MVC控制器

时间:2019-04-11 11:19:41

标签: c# asp.net-mvc

如何从模型c#类方法中调用控制器动作方法。

if (dic_fare.Count == 0)
{

}

public ActionResult Index()
{

}

2 个答案:

答案 0 :(得分:3)

您在问错问题。

控制器是通过HTTP请求通过ASP.NET MVC管道而不是直接从代码中调用的。

如果您确实想要,但您不应该这样做,则可以创建控制器的实例(var controller = new YourController(/* dependencies */))并在其上调用所需的操作方法({{1 }})。但是,很可能您会丢失各种依赖项(var result = controller.Index()ControllerContext),并且您无法真正解析响应。

相反,重构代码。将您想要的代码移到另一个类,然后从您的控制器(以及您现在要从中调用该控制器的代码)中调用该类。

答案 1 :(得分:2)

需要时,您的设计已关闭。

要调用Action,您首先必须实例化一个Controller,该Controller希望在HttpContext中运行,并具有其他各种期望。

要做的是排除要使用的业务逻辑,并将其放在单独的类中,例如在项目的\Services文件夹中。