在另一个MVC项目中使用来自一个MVC项目的控制器,相同的解决方案

时间:2015-05-21 15:54:51

标签: asp.net-mvc web-services asp.net-web-api

以下是该方案:

我有一个nopCommerce MVC网站 - 我需要"打开"此站点中的数据通过Web服务提供给其他站点。我对MVC顺便说一句。

我的计划是在nopCommerce网站的同一解决方案中创建一个webApi项目并引用它。然后,在webAPI控制器中访问nopCommerce控制器,例如

var product = Nop.Web.Controllers.CatalogueController.GetProduct(id);

我无法做到这一点,因为我必须实例化一个CatalogController对象 - 我开始创建对象,但是需要传递它以实例化它 - 几十个服务,所以这个部分已经抛弃了我 - 我不确定这些控制器是如何在"标准中创建的?#34; MVC项目 - 我无法在任何地方找到它,所以我认为它在某个地方的引擎盖下......?

我的问题 - 是否有可能做我想做的事情 - 目的是不重复nopCommerce项目中的代码 - 我只想保留该项目并使用其中已有的功能通过从Web服务调用它们 - 也许我对如何做它的想法有缺陷/不可能?你能建议其他方法吗?或解释我如何创建控制器?

1 个答案:

答案 0 :(得分:1)

虽然可以这样做,但绝对不是推荐的方法。在传统的场景中,我建议将代码从您想要重用的MVC操作移动到MVC和Web Api项目可以共享的类库中。但是,鉴于您在这里处理第三方解决方案nopCommerce,我不确定您实际可以使用多少代码进行随机播放。我不熟悉nopCommerce,但如果您有权访问任何底层API,例如它提供的存储库或服务类,我建议让您的Web Api直接利用这些而不是控制器操作