ASP.NET MVC 项目中的“应用程序文件夹”其实就是指 Areas 文件夹(区域),它是 MVC 官方提供的、用来把一个大项目按功能模块垂直拆分的标准化方案。
举个最典型的例子:
一个完整的网站通常有这几块:
- 前台(Home、Product、Blog……)
- 后台管理(Admin)
- API 接口(Api)
- 会员中心(Member)
如果全部挤在根目录的 Controllers / Views 里,项目大了以后会乱成一团。
Areas 就是用来解决这个问题的“应用程序文件夹”。
一、Areas 的物理结构(一个 Area 就是一个小型 MVC)
Areas/
├─ Admin/ ← 后台管理区域(最常用)
│ ├─ Controllers/
│ │ ├─ DashboardController.cs
│ │ ├─ UserController.cs
│ │ └─ ProductController.cs
│ ├─ Views/
│ │ ├─ Dashboard/
│ │ │ └─ Index.cshtml
│ │ ├─ User/
│ │ └─ Shared/
│ │ └─ _AdminLayout.cshtml
│ └─ AdminAreaRegistration.cs ← 必须有这个文件
│
├─ Member/ ← 会员中心区域
│ └─ ...(同上结构)
│
└─ Api/ ← Web API 区域(可选)
└─ ...(同上结构)
每个 Area 都拥有自己独立的:
- Controllers
- Views
- 路由注册文件(XXXAreaRegistration.cs)
- 甚至可以有自己的 _Layout、Web.config、Bundles
二、如何新建一个 Area(3 步搞定)
- 右键项目 → 添加 → 区域(Area)
- 区域名称输入:
Admin - Visual Studio 自动生成上面完整的文件夹结构 +
AdminAreaRegistration.cs
生成的注册文件内容如下(非常重要):
// Areas/Admin/AdminAreaRegistration.cs
public class AdminAreaRegistration : AreaRegistration
{
public override string AreaName => "Admin"; // 必须和文件夹名一致
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
name: "Admin_default",
url: "Admin/{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
三、访问地址示例
| 区域 | 控制器 | 动作 | 实际访问地址 |
|---|---|---|---|
| Admin | DashboardController | Index | https://yoursite.com/Admin |
| Admin | ProductController | Edit/5 | https://yoursite.com/Admin/Product/Edit/5 |
| Member | OrderController | List | https://yoursite.com/Member/Order/List |
四、实战技巧(99% 项目都会用到)
- 后台专用布局页
在Areas/Admin/Views/Shared/_AdminLayout.cshtml写后台专用的侧边栏 + 顶部导航。 - 后台全局权限控制(推荐)
新建一个[AdminAuthorize]特性,放在 Admin 区域所有控制器上:
[AdminAuthorize] // 自定义特性,判断是否登录 + 是否 Admin 角色
public class DashboardController : Controller { ... }
- 前台和后台完全隔离
- 前台用 www.yoursite.com
- 后台用 admin.yoursite.com(子域名 + 同一个项目,通过 Host 头判断路由也行)
- 一个项目里混 MVC + WebAPI
把所有接口都放到Areas/Api/Controllers/,路由前缀自动变成/api/...
五、完整推荐项目结构(企业级标准)
Areas/
├─ Admin/ ← 后台管理(只有管理员能进)
├─ Member/ ← 会员中心(登录后可见)
├─ Shop/ ← 前台商城模块(可再细分)
└─ Api/ ← 给小程序/App 用的接口
Controllers/ ← 只放前台公共控制器(Home、News 等)
Views/
└─ Home/
└─ Shared/_Layout.cshtml ← 前台布局
六、总结一句话
Areas 就是 ASP.NET MVC 官方给你提供的“应用程序文件夹”功能
用好了以后,一个项目可以轻松做到几千个页面、几十个功能模块,代码依然清晰有序。
需要我直接发你一个 “前台 + 后台 Admin 区域 + 会员中心 + API 区域” 完整可运行的 MVC 5 项目模板吗?
里面已经包含:
- 登录判断
- Admin 专用布局
- 权限过滤器
- 中文菜单
直接拉下来就能改自己的业务,省一个星期的时间,随时说一声即可!