ASP.NET Web Pages – 文件夹

ASP.NET Web Pages(Razor v2/v3)中的文件夹结构与约定详解

ASP.NET Web Pages 虽然轻量,但它遵循一套非常清晰的文件夹约定,理解这些约定能让你项目结构清晰、路由自动工作、布局自动应用、功能模块化。下面是官方推荐 + 实际生产中最常用、最好用的文件夹结构(适用于 WebMatrix、Visual Studio、IIS 部署都一样)。

推荐的标准文件夹结构(2025 年依然最佳实践)

MyWebSite/                          ← 网站根目录
│
├── _ViewStart.cshtml               ← 全局默认布局(非常重要)
├── Web.config                      ← 路由、数据库等配置
├── Default.cshtml                  ← 首页(可有可无)
├── About.cshtml
├── Contact.cshtml
│
├── App_Data/                       ← 自动只读,存放数据库文件
│   ├── MyDatabase.sdf               ← SQL Server Compact(.sdf)
│   └── MyDatabase.mdf               ← SQL Server Express(如果用)
│
├── App_Code/                       ← 放自定义类、助手函数(自动编译)
│   ├── Helpers.cshtml              ← @helper 语法写助手
│   ├── MyClass.cs                  ← 普通 C# 类
│   └── Utils.cs
│
├── Shared/                         ← 推荐存放共享布局和局部视图
│   ├── _Layout.cshtml              ← 主布局页
│   ├── _Header.cshtml              ← 局部视图(@RenderPage)
│   ├── _Footer.cshtml
│   └── _AdminLayout.cshtml
│
├── Content/    或   css/           ← CSS、图片、字体等静态资源
│   ├── css/site.css
│   ├── images/logo.png
│   └── fonts/
│
├── Scripts/                        ← JavaScript 文件
│   ├── jquery.js
│   └── site.js
│
├── Admin/                          ← 后台文件夹(可以有自己的布局)
│   ├── _ViewStart.cshtml           ← 只对 Admin 目录生效,可指定不同布局
│   ├── Index.cshtml                ← /Admin 或 /Admin/Index
│   ├── Users.cshtml
│   └── Products.cshtml
│
├── Products/                       ← 产品模块(自动成为路由)
│   ├── Index.cshtml                ← /Products
│   ├── Detail.cshtml               ← /Products/Detail?id=5
│   └── _ViewStart.cshtml           ← 可选:该目录专用布局
│
├── Files/     或   Uploads/        ← 用户上传文件(建议放根目录以外,或加访问限制)
│   └── avatar.jpg
│
└── bin/                            ← 部署后自动生成,勿手动修改

各文件夹的特殊作用与约定(超级重要)

文件夹是否必须特殊约定与作用典型内容
App_Data强烈推荐IIS 自动禁止 Web 访问(最安全),专门存放数据库文件(.sdf、.mdf、.mdb)SQL CE、SQL Express、Access 数据库
App_Code推荐里面的 .cs 和 .cshtml 文件会自动编译,可直接在页面中使用类名或 @helper自定义类、@helper 助手函数
Shared强烈推荐推荐存放 _Layout.cshtml、_ViewStart.cshtml、局部页面,结构更清晰 , 易于团队协作布局页、局部视图
Scripts约定标准 JS 目录,~ 路径可正确解析jQuery、自定义 JS
Content/css约定标准 CSS、图片目录site.css、bootstrap.css、images
Admin示例任意自定义文件夹都会自动成为路由前缀:/Admin/Index → Admin/Index.cshtml后台所有页面
任意文件夹只要在里面放 .cshtml 文件,就自动支持路由:/Products/Detail → Products/Detail.cshtml业务模块(News、Blog、Shop 等)
根目录放不需要路由前缀的页面(如首页、About、Contact)公共页面

路由规则(你不需要写任何配置,自动生效)

你请求的 URL实际映射到的文件说明
/Default.cshtml 或 Index.cshtml根目录优先级:Default > Index
/About/About.cshtml同名文件
/Products/Products/Index.cshtml文件夹 + Index
/Products/Detail?id=1/Products/Detail.cshtml自动参数传递
/Admin/Admin/Index.cshtml 或 /Admin/Default.cshtml后台路由
/Files/avatar.jpg直接返回静态文件静态资源直接访问

小技巧:让不同文件夹使用不同布局

// Admin/_ViewStart.cshtml  (只影响 Admin 目录及子目录)
@{
    Layout = "~/Shared/_AdminLayout.cshtml";
}

// Products/_ViewStart.cshtml
@{
    Layout = "~/Shared/_ProductLayout.cshtml";
}

根目录的 _ViewStart.cshtml 是全局默认,子目录的会覆盖它,实现“按模块不同布局”。

总结:最推荐的干净结构(复制粘贴就可用)

/
├── _ViewStart.cshtml
├── Web.config
├── Default.cshtml
├── Shared/
│   └── _Layout.cshtml
├── App_Data/
├── App_Code/
├── Content/css/
├── Content/images/
├── Scripts/
├── Admin/
│   ├── _ViewStart.cshtml → 用 _AdminLayout.cshtml
│   └── *.cshtml
└── Blog/
    ├── _ViewStart.cshtml → 可选不同布局
    └── *.cshtml

这样组织项目,你会发现:

  • 路由自动工作,不用写一行配置
  • 布局自动应用,子目录还能覆盖
  • 数据库最安全(App_Data)
  • 代码与页面分离(App_Code)
  • 多人协作、后期维护都非常清晰

需要我给你打包一个这个结构的完整可运行 demo 项目(含数据库、后台、前台)吗?10 分钟就能跑起来。

文章已创建 2863

发表回复

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

相关文章

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

返回顶部