ASP.NET MVC – 应用程序文件夹

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 步搞定)

  1. 右键项目 → 添加 → 区域(Area)
  2. 区域名称输入:Admin
  3. 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 }
        );
    }
}

三、访问地址示例

区域控制器动作实际访问地址
AdminDashboardControllerIndexhttps://yoursite.com/Admin
AdminProductControllerEdit/5https://yoursite.com/Admin/Product/Edit/5
MemberOrderControllerListhttps://yoursite.com/Member/Order/List

四、实战技巧(99% 项目都会用到)

  1. 后台专用布局页
    Areas/Admin/Views/Shared/_AdminLayout.cshtml 写后台专用的侧边栏 + 顶部导航。
  2. 后台全局权限控制(推荐)
    新建一个 [AdminAuthorize] 特性,放在 Admin 区域所有控制器上:
[AdminAuthorize]   // 自定义特性,判断是否登录 + 是否 Admin 角色
public class DashboardController : Controller { ... }
  1. 前台和后台完全隔离
  • 前台用 www.yoursite.com
  • 后台用 admin.yoursite.com(子域名 + 同一个项目,通过 Host 头判断路由也行)
  1. 一个项目里混 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 专用布局
  • 权限过滤器
  • 中文菜单

直接拉下来就能改自己的业务,省一个星期的时间,随时说一声即可!

文章已创建 2965

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部