Asp.net mvc 在MVC区域,如何将控制器与外部项目分离
我有一个要求,我需要在MVC项目之外分离控制器。我的情况是,我在MVC项目中有3个区域,我将每个区域内的所有控制器取出,放入单独的项目中,将所有视图保留在该区域内。我不知道如何做到这一点。如果有人遇到这个问题,请分享你的TOT和代码Asp.net mvc 在MVC区域,如何将控制器与外部项目分离,asp.net-mvc,asp.net-mvc-3,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 3,Asp.net Mvc 4,我有一个要求,我需要在MVC项目之外分离控制器。我的情况是,我在MVC项目中有3个区域,我将每个区域内的所有控制器取出,放入单独的项目中,将所有视图保留在该区域内。我不知道如何做到这一点。如果有人遇到这个问题,请分享你的TOT和代码 谢谢。您可以在同一个解决方案中创建两个项目 第一个项目将是MVC4项目,其中包含视图、脚本、css和区域。(MyProject.PresentationLayer) 第二个项目是解决方案中的类库,它可以包含控制器和模型等代码。(MyProject.logicaly
谢谢。您可以在同一个解决方案中创建两个项目
- 第一个项目将是MVC4项目,其中包含视图、脚本、css和区域。(MyProject.PresentationLayer)
- 第二个项目是解决方案中的类库,它可以包含控制器和模型等代码。(MyProject.logicalyer)
现在,您应该能够在MyProject.LogicLayer中编写代码,并正常引用MyProject.PresentationLayer中的代码。谢谢大家,经过一番搜索,我找到了答案,而且非常简单。 如果您的应用程序中有更多区域,并且您只想将控制器取出到不同的项目中。正如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"}
);
}
就像在每个区域内一样,你需要添加相应分离项目的名称空间是的,这是基本的,但在我的例子中,我有三个不同的区域,因此它可能在不同的区域中具有相同的控制器名称。因此,如果我将其分离为3 MyProject.logicalyer,路由将如何工作。好的,感谢您提供更多关于这方面的内容,并跟进您的路由答案。