ASP.NET Web 开发完整教程
第一部分:基础入门
第一章:ASP.NET 是什么?
在学习任何技术之前,我们首先要明白它是什么,解决什么问题。

1 定义 ASP.NET 是由微软开发的一个用于构建 Web 应用程序的免费、开源框架,它运行在 Windows 服务器上(或通过 .NET 5/6/7+ 跨平台),允许开发者使用强大的 C# 或 VB.NET 语言来创建动态的、数据驱动的网站和 Web 服务。
2 核心概念
- 框架:它不是一门语言,而是一个“工具箱”,提供了构建 Web 应用所需的各种类库、工具和模板。
- 服务器端技术:ASP.NET 代码在服务器上执行,生成 HTML、CSS 和 JavaScript,然后发送到用户的浏览器,这意味着用户看不到你的 C# 代码,只看到最终的网页内容。
- 现代演进:传统的 ASP.NET Web Forms 已经过时,我们主要学习两个现代分支:
- ASP.NET MVC:一种基于模型-视图-控制器架构的模式,强调关注点分离和测试驱动开发。
- ASP.NET Core:微软最新的、跨平台的、高性能的框架,它融合了 MVC 和 Web API 的优点,是目前唯一推荐用于新项目的框架。本教程将主要围绕 ASP.NET Core 展开。
3 为什么选择 ASP.NET Core?
- 跨平台:可以在 Windows、Linux 和 macOS 上运行和部署。
- 高性能:经过高度优化,性能极佳。
- 开源:拥有活跃的社区,持续更新和改进。
- 云原生:为部署在云端(如 Azure)而设计。
- 统一框架:使用同一套技术栈构建网站、Web API 和移动后端。
第二章:开发环境搭建
在开始编码前,我们需要准备好工具。

1 必需软件
- .NET SDK (Software Development Kit):包含了编译和运行 .NET 应用程序所需的一切,下载地址:https://dotnet.microsoft.com/download
- 选择最新的 LTS (长期支持) 版本,.NET 6.0, 7.0 或 8.0。
- 代码编辑器:
- Visual Studio Code (VS Code):轻量级、跨平台、免费,强烈推荐,你需要安装 C# 扩展包。
- Visual Studio (VS):功能最强大的 IDE,但体积较大,有社区版免费,对于初学者,VS Code 完全足够。
2 验证安装
打开终端(在 Windows 上是 cmd 或 PowerShell,在 macOS/Linux 上是 Terminal),输入以下命令:
dotnet --version
如果显示了版本号,说明 .NET SDK 安装成功。
第三章:创建你的第一个 ASP.NET Core 应用
我们将使用命令行工具创建一个最简单的 Web 应用。

1 创建项目 在终端中,导航到你想要存放项目的文件夹,然后运行:
dotnet new webapp -o MyFirstWebApp
dotnet new webapp:使用webapp模板创建一个 Razor Pages 项目(Razor Pages 是 ASP.NET Core 中创建网页最简单的方式)。-o MyFirstWebApp:将项目创建在名为MyFirstWebApp的文件夹中。
2 运行项目 进入项目目录:
cd MyFirstWebApp
然后运行应用程序:
dotnet run
你会看到类似下面的输出:
info: Microsoft.Hosting.Lifetime[14]
Now listening on: https://localhost:7123
info: Microsoft.Hosting.Lifetime[14]
Now listening on: http://localhost:5123
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
在浏览器中打开 https://localhost:7123(或 http://localhost:5123),你将看到一个默认的欢迎页面。
恭喜!你已经成功运行了你的第一个 ASP.NET Core 应用!
第二部分:核心概念详解
现在我们来深入理解 ASP.NET Core 的工作原理。
第四章:请求处理流程
一个典型的 HTTP 请求在 ASP.NET Core 中是这样处理的:
- 请求到达:用户在浏览器中输入 URL,向你的服务器发送一个 HTTP 请求。
- 中间件:请求会经过一个由“中间件”组成的管道,中间件是一些小的组件,可以处理请求(如认证、日志记录、压缩响应)并决定是将其传递给下一个中间件,还是直接返回响应。
- 路由:中间件管道的末端是路由系统,它检查请求的 URL,并将其映射到应用程序中特定的代码(称为“终结点” EndPoint)。
- 控制器/页面模型:路由找到对应的代码后,会执行它,在 MVC 中,这通常是控制器的一个动作方法;在 Razor Pages 中,这是一个页面模型的
OnGet或OnPost方法。 - 业务逻辑:控制器/页面模型会执行业务逻辑,比如从数据库读取数据、进行计算等。
- 视图:控制器/页面模型会选择一个视图(一个
.cshtml文件),并将数据传递给它,视图引擎(如 Razor)将 C# 代码和 HTML 混合在一起,生成最终的 HTML。 - 响应返回:生成的 HTML 通过中间件管道返回给用户的浏览器。
第五章:Razor Pages (推荐入门)
Razor Pages 是 ASP.NET Core 中创建页面的标准方式,非常直观。
1 Razor 语法
Razor 文件(.cshtml)混合了 HTML 和 C#。
- 符号:用于从 C# 切换到 HTML。
- 用于执行 C# 代码块。
@变量名:用于显示 C# 变量的值。
示例:Pages/Index.cshtml
@page
@model MyFirstWebApp.Pages.IndexModel
@{
ViewData["Title"] = "Home page";
}
<div class="text-center">
<h1 class="display-4">Welcome</h1>
<p>Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
</div>
@page:指令,告诉这个文件是一个 Razor Page,可以直接通过 URL 访问。@model ...:指定这个页面使用的模型类。
2 页面模型
每个 .cshtml 文件都有一个对应的 .cs 文件(代码后置文件),用于存放 C# 逻辑。
示例:Pages/Index.cshtml.cs
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
namespace MyFirstWebApp.Pages
{
public class IndexModel : PageModel
{
private readonly ILogger<IndexModel> _logger;
public IndexModel(ILogger<IndexModel> logger)
{
_logger = logger;
}
public void OnGet()
{
// 当页面通过 GET 请求访问时,此方法被调用
ViewData["Message"] = "Hello from the C# code!";
}
}
}
OnGet():这是一个处理 HTTP GET 请求的方法,当用户访问此页面时,它会被自动执行。ViewData:一个字典对象,用于从页面模型向视图传递数据。
3 在视图中使用数据
修改 Pages/Index.cshtml,显示从模型传来的数据:
<p>@ViewData["Message"]</p>
现在刷新页面,你会看到 "Hello from the C# code!"。
第六章:表单与数据绑定
Web 应用经常需要从用户那里收集数据,我们使用 HTML 表单来实现。
1 创建一个简单的表单
创建一个新页面 Pages/Contact.cshtml 和 Pages/Contact.cshtml.cs。
Pages/Contact.cshtml.cs
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
namespace MyFirstWebApp.Pages
{
public class ContactModel : PageModel
{
[BindProperty] // 将表单字段自动绑定到这个属性
public string UserName { get; set; } = "";
public void OnGet()
{
}
public void OnPost()
{
// 当表单通过 POST 提交时,此方法被调用
// UserName 属性已经被自动填充了表单中的值
}
}
}
Pages/Contact.cshtml
@page
@model MyFirstWebApp.Pages.ContactModel
<h1>Contact Us</h1>
<form method="post">
<div>
<label for="userName">Your Name:</label>
<input type="text" id="userName" name="UserName" />
</div>
<button type="submit">Submit</button>
</form>
method="post":指定使用 HTTP POST 方法提交表单。name="UserName":输入框的name属性必须与页面模型中[BindProperty]标记的属性名UserName完全一致。- 当你点击提交按钮时,会触发
OnPost()方法,UserName的值会被自动设置。
第三部分:进阶主题
掌握了基础后,我们来看看如何构建更复杂的应用。
第七章:使用数据库
Web 应用几乎总是需要持久化存储数据,我们使用 Entity Framework Core (EF Core) 作为对象关系映射工具。
1 安装 EF Core 在项目目录下运行命令:
dotnet add package Microsoft.EntityFrameworkCore.SqlServer dotnet add package Microsoft.EntityFrameworkCore.Design
2 创建数据模型
创建一个 Models 文件夹,并定义一个简单的 TodoItem 类。
// Models/TodoItem.cs
namespace MyFirstWebApp.Models
{
public class TodoItem
{
public int Id { get; set; }
public string? Task { get; set; }
public bool IsDone { get; set; }
}
}
3 创建数据库上下文 数据库上下文是 EF Core 的核心,它连接你的模型和数据库。
// Data/TodoContext.cs
using Microsoft.EntityFrameworkCore;
using MyFirstWebApp.Models;
namespace MyFirstWebApp.Data
{
public class TodoContext : DbContext
{
public TodoContext (DbContextOptions<TodoContext> options)
: base(options)
{
}
public DbSet<TodoItem> TodoItems { get; set; } = null!;
}
}
4 配置数据库连接
在 Program.cs 中注册 DbContext。
// Program.cs
using Microsoft.EntityFrameworkCore;
using MyFirstWebApp.Data;
var builder = WebApplication.CreateBuilder(args);
// 1. 添加服务
builder.Services.AddRazorPages();
// 注册 TodoContext
builder.Services.AddDbContext<TodoContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")));
var app = builder.Build();
// ... 其余代码 ...
在 appsettings.json 中添加连接字符串:
{
"ConnectionStrings": {
"DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=MyFirstWebAppDb;Trusted_Connection=True;MultipleActiveResultSets=true"
},
// ...
}
5 创建数据库 在终端中运行命令(确保项目已编译):
dotnet ef database update
这会根据你的模型创建一个名为 MyFirstWebAppDb 的 LocalDB 数据库。
6 在页面中使用数据
现在你可以在页面模型中注入 TodoContext 并进行数据库操作了(在 OnGet 中查询所有待办事项)。
第八章:ASP.NET MVC 简介
虽然我们以 Razor Pages 入门,但了解 MVC 也很重要,因为它在构建大型 API 和复杂应用时非常流行。
- M (Model):与 Razor Pages 中的模型相同,代表数据和业务逻辑。
- V (View):与 Razor Pages 中的视图相同,负责显示 UI。
- C (Controller):接收 HTTP 请求,调用模型,选择视图并返回响应,它是一个独立的类,不像 Razor Pages 那样和视图文件紧密绑定。
一个典型的 MVC 请求流程:
请求 -> Controller (Action Method) -> Model -> View -> HTML 响应
第九章:部署
完成开发后,你需要将应用部署到服务器上。
- 发布应用:在项目目录下运行:
dotnet publish -c Release -o ./publish
这会生成一个独立的文件夹,包含了运行应用所需的一切。
- 部署方式:
- IIS (Internet Information Services):在 Windows Server 上最常用的 Web 服务器。
- Azure App Service:微软提供的云平台,是部署 ASP.NET Core 应用的最简单、最推荐的方式。
- Docker:将应用容器化,便于在任何支持 Docker 的环境中部署。
第四部分:学习资源与总结
推荐学习资源
- 官方文档 (首选)
- ASP.NET Core 官方文档:最权威、最全面、最新的资料。
- 视频教程
- Channel 9 (微软官方):有大量高质量的 ASP.NET Core 教程。
- freeCodeCamp:有非常受欢迎的入门到进阶的完整视频课程。
- 书籍
《ASP.NET Core in Action》:非常经典的书籍,内容深入。
- 社区
- Stack Overflow:遇到问题,先在这里搜索。
- GitHub:查看 ASP.NET Core 源码和优秀项目。
学习路径建议
- 打好基础:熟练掌握 C# 语言、HTML、CSS 和 JavaScript。
- 从 Razor Pages 开始:理解请求-响应模型、页面模型、视图和表单绑定。
- 学习数据访问:掌握 EF Core 的基本用法,如增删改查。
- 探索进阶主题:如身份验证、授权、依赖注入、中间件等。
- 学习 MVC:理解其架构,并知道何时选择 MVC 而非 Razor Pages。
- 动手实践:尝试构建一个小型项目,比如博客、待办事项列表或简单的电商网站。
ASP.NET Core 是一个功能强大且现代化的框架,拥有美好的未来,希望这份教程能帮助你开启你的 ASP.NET Web 开发之旅!祝你编码愉快!
