Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 将控制器从一个项目调用到另一个项目_Asp.net Mvc_Asp.net Mvc 4 - Fatal编程技术网

Asp.net mvc 将控制器从一个项目调用到另一个项目

Asp.net mvc 将控制器从一个项目调用到另一个项目,asp.net-mvc,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 4,我正在使用Asp.NETMVC4和razor。我想知道如何在同一个解决方案中将控制器从一个项目调用到另一个项目。(我是MVC4新手) 答案在很大程度上取决于你试图解决的具体问题 在询问有关堆栈溢出的问题时,请记住这一点。有时候,询问如何解决你的问题比问如何完成你提出的解决方案更有益 如果您的目标是避免代码复制,那么最简单的答案是添加第二个项目作为对第一个项目的引用。访问控制器仍然有点困难,因为您需要正确地实例化它,因此我建议您将希望避免复制到第三个项目中的代码抽象出来,并让两个MVC项目调用您创

我正在使用Asp.NETMVC4和razor。我想知道如何在同一个解决方案中将控制器从一个项目调用到另一个项目。(我是MVC4新手)


答案在很大程度上取决于你试图解决的具体问题

在询问有关堆栈溢出的问题时,请记住这一点。有时候,询问如何解决你的问题比问如何完成你提出的解决方案更有益

如果您的目标是避免代码复制,那么最简单的答案是添加第二个项目作为对第一个项目的引用。访问控制器仍然有点困难,因为您需要正确地实例化它,因此我建议您将希望避免复制到第三个项目中的代码抽象出来,并让两个MVC项目调用您创建的实用程序类


另一种可能性是,您希望web服务在保持客户机/服务器关系的同时彼此交互。这可以通过创建一个HTTP web请求来实现,该请求指向Visual Studio在运行第二个web服务项目时选择的端口号。Net能够做到这一点,但我个人建议使用。

您只需将控制器添加到另一个项目(类库或MVC项目等)。我们有两个共享控制器的项目(webAPI和MVC)。我通常对API控制器使用区域约束,对MVC控制器使用名称空间约束——特别是如果您在某些项目中使用了类似于base HomeController.cs的内容,并且您只想在一个特定的MVC应用程序项目中覆盖它

routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
            namespaces: new[] { "Common.MVC.Controllers" }
        );

您必须分离项目(因为您在本地进行测试),然后运行目标项目并获取地址(如)。之后, 在另一个项目的控制器中,使用以下命令:

public ActionResult Index()
{
    return Redirect("http://localhost:15823/");
}

然后运行另一个项目。

您找到解决方案了吗?请看这里的答案