如何在MVC区域中将控制器分离到外部项目

时间:2015-06-23 11:00:49

标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-4

我有一个要求,我需要在MVC项目之外分离控制器。我的情况就像我在MVC项目中有3个区域,我通过保持区域内的所有视图将每个区域内的所有控制器取出到单独的项目中。我不知道如何实现这一目标。如果有任何人遇到这个或实施,请分享您的小点和代码。

感谢。

2 个答案:

答案 0 :(得分:0)

您可以在同一解决方案中创建两个项目。

  • 第一个项目是您的MVC4项目,其中包含视图,脚本,CSS和区域。 (MyProject.PresentationLayer)
  • 第二个项目是解决方案中的类库,它可以包含您的代码,例如控制器和模型。 (MyProject.LogicLayer)

使用Visual Studio, MyProject.PresentationLayer 将需要添加到 MyProject.LogicLayer 的引用。这可以通过右键单击解决方案资源管理器中的引用并单击 MyProject.LogicLayer 旁边的解决方案/项目上的复选框来完成。

您现在应该能够在 MyProject.LogicLayer 中编写代码并正常引用 MyProject.PresentationLayer 中的代码。

答案 1 :(得分:0)

谢谢大家在一些搜索后我找到了答案,这也很简单。 如果您的应用程序中有更多区域,并且您希望仅将控制器取出到不同的项目中。正如Jerode所说,Dll引用会做,但是当区域相同时,控制器名称可能会出现在不同的区域,所以我们需要进一步调整,在区域注册部分我们需要指定项目的命名空间

public override void RegisterArea(AreaRegistrationContext context)
    {
        context.MapRoute(
            "AreaName_default",
            "Areaname/{controller}/{action}/{id}",
            new { controller = "controller", action = "Create", id = UrlParameter.Optional },
             new[] { "NameSpaceOfControllerAreaWhichSeparated"}
        );

    }

与每个区域内部一样,您需要添加相应分离项目的命名空间