ASP.NET MVC4有预定义的目录规则,框架根据这些目录规则去加载各种类。在MVC单项目中,随着业务越来越复杂多样,我们会希望按照功能对代码按文件夹分门别类。如果在默认的目录结构下业务混合,这样不方便管理和维护;如果另开新项目,又比较散乱。那么MVC有没有这样一种机制来相对独立这些模块呢?答案是肯定的,这就是MVC的Area区域技术,用来实现在一个MVC项目中组织和维护多个相对独立的模块。
在VS中右键单击项目,在弹出的菜单中选择“添加(A)”->“Area...”,在弹出的对话框中输入区域名称(遵守C#标示符命名规则)即可(比如输入Api),VS将自动在根目录创建Areas文件夹,此文件夹下每个独立的Area一个文件夹,Api文件夹内也是一样的Models、Controllers、Views结构。
图1:右键菜单
图2:输入Area Name
图3:文件结构
唯一不同的是多了一个ApiAreaRegistration.cs(区域注册类),用于向MVC框架注册路由等信息,Global.asax.cs中会自动调用该类的RegisterArea方法。新建Area后VS自动创建相关目录结构,按需修改ApiAreaRegistration路由即可。
图4:ApiAreaRegistration类
图5:Global.asax