相信很多用webform的程序猿都习惯性的使用虚拟目录的形式来对一个程序添加新的功能,那么在mvc下该如何来弄呢?
首先得有一个项目基层的项目,然后我们在这个项目的基础上新增一个功能模块,例如信息发布功能
此时我们不想去重新编译基层的项目,只是在此基础上新增个功能,所以我们通过添加虚拟目录来完成
下图是目录结构,我们的虚拟目录挂在Areas下面(不了解区域的参考http://www.cnblogs.com/jyan/archive/2012/07/25/2607752.html)
下面开始我们添加信息发布模块
一、新建一个空的MVC项目
只留下Controllers、Models、Views、Web.config
Web.config可以删也可以留,有时会碰到razor视图没有代码提示的问题,建议还是留着吧
二、添加路由注册
添加一个类,继承AreaRegistration,按照规范类名为项目名+AreaRegistration
1 using System.Web.Mvc; 2 3 namespace InformationTest 4 { 5 public class InformationTestAreaRegistration : AreaRegistration 6 { 7 public override string AreaName 8 { 9 get 10 { 11 return "InformationTest"; 12 } 13 } 14 15 public override void RegisterArea(AreaRegistrationContext context) 16 { 17 context.MapRoute( 18 "InformationTest_default", 19 "InformationTest/{controller}/{action}/{id}", 20 new { action = "Index", id = UrlParameter.Optional } 21 ); 22 } 23 } 24 }
最终的结构就是这样的
大家会发现这个结构和Areas里的结构式一样的,没错我们这里只是把原本的Areas以一个项目的形式剥离出来了
三、将InformationTest.dll拷贝到主项目的bin文件夹下
四、在IIS里添加虚拟目录
希望对大家有帮助,有什么更好的方式,欢迎大家来交流