ASP.NET Web Pages – 教程

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 + IISWindows、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 年就停止更新了

需要我立刻帮你:

  1. 把你现有的 Web Pages 项目一键升级到 .NET 9?
  2. 还是给你一个 2025 年最新、最流行的 ASP.NET Core Razor Pages 完整模板(带后台登录 + 权限 + 增删改查)?

直接说“给我现代版模板”或“帮我迁移老项目”,我 1 分钟发给你完整可运行代码!

文章已创建 2838

发表回复

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

相关文章

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

返回顶部