ASP.NET Web Pages 完整教程(2025 年最新实用版)
注意:ASP.NET Web Pages 是微软在 2010–2016 年推出的轻量级框架(属于“Razor 语法 v1/v2”),主要用于小型网站。它和现在的 ASP.NET Core 是完全不同的两个时代的产品。
| 项目 | ASP.NET Web Pages(旧) | ASP.NET Core Razor Pages(新) |
|---|---|---|
| 最后更新时间 | 2016 年(已停止更新) | 2025 年仍在高速更新(.NET 9) |
| 运行平台 | 只能跑 Windows + IIS | Windows、Linux、macOS、Docker |
| 是否推荐新项目 | 完全不推荐 | 强烈推荐 |
| 语法相似度 | 90% 相同(都是 Razor) | 更现代、更强大 |
结论:
- 如果你是初学者或新项目 → 直接学 ASP.NET Core Razor Pages(下面会教你怎么 5 分钟迁移)
- 如果你公司还有老的 Web Pages 项目需要维护 → 下面的教程可以让你立刻上手维护
1. 老版 ASP.NET Web Pages 快速入门(纯维护用)
典型文件结构(WebMatrix 或 Visual Studio 2013–2019 打开即可):
MyOldSite/
├── _AppStart.cshtml
├── Default.cshtml
├── About.cshtml
├── Products/
│ ├── List.cshtml
│ └── Edit.cshtml
├── _Layout.cshtml
├── App_Data/ ← Access/SQLite 数据库放在这里
└── files/ ← 上传的文件
核心语法(Razor v2)—— 2025 年你还可能在老项目里看到:
@{
Layout = "~/_Layout.cshtml";
var db = Database.Open("MyDB"); // 默认用 SQLite 或 Access
var name = Request["name"];
}
<!DOCTYPE html>
<html>
<head><title>Hello</title></head>
<body>
<h1>欢迎,@name!</h1>
@if(IsPost){
<p style="color:green">表单已提交!</p>
}
<form method="post">
姓名:<input type="text" name="name" value="@name" />
<input type="submit" value="提交" />
</form>
<h2>产品列表</h2>
<table border="1">
@foreach(var row in db.Query("SELECT * FROM Products")){
<tr>
<td>@row.Id</td>
<td>@row.Name</td>
<td>@row.Price</td>
<td><a href="Edit.cshtml?id=@row.Id">编辑</a></td>
</tr>
}
</table>
</body>
</html>
常用内置对象(老项目里到处都是):
Request[] → 取表单或 QueryString
Response.Write() → 输出内容
IsPost / IsAjax → 判断请求类型
Database.Open() → 打开 App_Data 里的数据库
WebSecurity → 简单的会员系统
File.Upload() → 文件上传
2. 5 分钟把老 Web Pages 项目迁移到 ASP.NET Core Razor Pages(2025 推荐做法)
2025 年最常见的“救老项目”方案:
# 1. 新建一个现代 Razor Pages 项目
dotnet new webapp -n MyNewSite --auth None
cd MyNewSite
# 2. 把老项目的 .cshtml 文件直接复制到 Pages 文件夹
# 90% 的 Razor 语法可以直接运行!
# 3. 只改三处地方就基本能跑:
// 旧:var db = Database.Open("MyDB");
// 新:(Program.cs 里先注册)
builder.Services.AddDbContext<AppDbContext>(options =>
options.UseSqlite("Data Source=App_Data/MyDB.sqlite"));
// Pages/Product/List.cshtml.cs
public class ListModel : PageModel
{
private readonly AppDbContext db;
public List<Product> Products { get; set; } = new();
public ListModel(AppDbContext context) => db = context;
public async Task OnGetAsync()
{
Products = await db.Products.ToListAsync();
}
}
迁移后好处:
- 可以跑在 Linux + Docker
- 支持 EF Core、依赖注入、Tag Helpers、Identity
- 性能提升 5–20 倍
3. 总结建议(2025 年真实情况)
| 你的情况 | 建议操作 |
|---|---|
| 完全新手想学 Razor 语法 | 直接学 ASP.NET Core Razor Pages(语法 95% 一样) |
| 公司还有 Web Pages 老项目要维护 | 先用上面老语法快速改 bug,空了再整体迁移到 .NET 9 |
| 想用老的 WebMatrix 开发 | 不要!WebMatrix 2016 年就停止更新了 |
需要我立刻帮你:
- 把你现有的 Web Pages 项目一键升级到 .NET 9?
- 还是给你一个 2025 年最新、最流行的 ASP.NET Core Razor Pages 完整模板(带后台登录 + 权限 + 增删改查)?
直接说“给我现代版模板”或“帮我迁移老项目”,我 1 分钟发给你完整可运行代码!