从mvc控制器消耗web api控制器动作

时间:2017-02-28 09:38:38

标签: c# .net asp.net-mvc asp.net-web-api

我有两个控制器,一个mvc控制器和一个api控制器,两者都在同一个项目中。

HomeController: Controller{ ... }
DataController: ApiController{ ... }

如果我想在HomeController中使用DataController中的post动作,是否需要使用HttpClient

2 个答案:

答案 0 :(得分:4)

不需要。你可以在HomeController中直接创建DataController对象的对象,并使用它的post方法,如.Net中的实例方法。

public class HomeController : Controller
    {

        public ActionResult GetResult()
        {
            MyApp.DataController dataController = new MyApp.DataController();
            var data = dataController.Post("arguments");

            return View(data);
        }
    }

答案 1 :(得分:0)

有一个名为Refit的工具可以帮助你,它掩盖了httpclient交互的所有需求,并允许你创建一个可以注入控制器的服务,这样你就可以保持它们的可测试性。 Project page for Refit

强烈推荐此工具。我已经使用了相当多的东西,并认为它是在api背后分离逻辑时必不可少的工具包的一部分。