ASP.NET Core C# 完整学习指南
这份指南将按照从基础到高级的顺序,分为几个主要部分,并提供每个阶段的学习资源、核心概念和动手实践建议。

第一部分:基础准备
在开始 ASP.NET Core 之前,你需要掌握一些基础知识。
C# 语言基础
ASP.NET Core 是用 C# 编写的,因此扎实的 C# 基础是必须的。
-
核心概念:
- 变量与数据类型
- 运算符
- 控制流 (
if/else,switch,for,foreach,while) - 方法/函数
- 类与对象 (面向对象编程 OOP 的核心)
- 继承与多态
- 接口
- 异步编程 (
async/await)
-
推荐资源:
(图片来源网络,侵删)- 微软官方文档: C# 指南 - 最权威、最全面的学习资料。
- 视频教程:
- Bilibili: 搜索“C# 入门”、“C# 基础教程”,有很多优秀的免费系列课程。
- YouTube: Channel 9 (微软官方) 有大量高质量的 C# 教程。
.NET 生态系统基础
了解 .NET 是什么,以及它的核心组件。
-
核心概念:
- .NET SDK: 软件开发工具包,包含编译器、CLI 命令等。
- .NET Runtime: 运行时,负责执行代码。
- CLI (命令行界面): 使用
dotnet命令来创建、构建、运行和管理项目。 - NuGet: .NET 的包管理器,用于引用第三方库。
-
动手实践:
- 安装 .NET 6/7/8 SDK (推荐安装最新的 LTS 版本,如 .NET 8)。
- 打开命令行,输入
dotnet --version,确认安装成功。 - 尝试运行
dotnet new console创建一个控制台应用,并用dotnet run运行它。
第二部分:ASP.NET Core 核心入门
我们正式开始学习 ASP.NET Core。
创建你的第一个 Web 应用
我们将使用最流行的模板 Razor Pages。
-
步骤:
- 在命令行中,进入你想要创建项目的文件夹。
- 运行命令:
dotnet new webapp -n MyFirstWebAppwebapp: 指定创建一个 Razor Pages 应用模板。-n MyFirstWebApp: 指定项目名称为MyFirstWebApp。
- 进入项目目录:
cd MyFirstWebApp - 运行项目:
dotnet run - 打开浏览器,访问
https://localhost:7123(或控制台显示的 URL),你应该能看到一个欢迎页面。
-
项目结构解析:
Program.cs: 应用的入口点,在这里配置服务(如数据库、日志)和 HTTP 请求管道。appsettings.json: 应用的配置文件,存储数据库连接字符串、API 密钥等。Properties/launchSettings.json: 开发环境的启动配置,定义了端口等。Pages/: 存放 Razor Pages 文件夹。Index.cshtml是首页。wwwroot/: 存放静态文件,如 CSS、JavaScript、图片等。
理解核心概念
a. Razor Pages 模型
这是 ASP.NET Core 中最简单、最直观的 Web 开发模型。
- 一个页面 = 一个文件: 每个 URL 通常对应一个
.cshtml文件。 - 文件结构:
Index.cshtml: 视图层,包含 HTML 和 Razor 语法 (@Model.Name)。Index.cshtml.cs: 后台代码/模型,处理逻辑,这是一个 C# 类,通常包含PageModel基类。
- 数据传递:
- 在
Index.cshtml.cs中,定义一个public属性,如public string Message { get; set; }。 - 在
OnGet()或OnPost()方法中为这个属性赋值。 - 在
Index.cshtml中,使用@Model.Message来显示这个值。
- 在
动手实践: 修改 Pages/Index.cshtml.cs,在 OnGet 方法中设置 Message = "你好,ASP.NET Core!";,然后在 Pages/Index.cshtml 中显示 @Model.Message。
b. 中间件
中间件是组装到应用处理管道中以处理请求和响应的软件,你可以把它想象成一个“处理链”。
-
Program.cs中的管道配置:var builder = WebApplication.CreateBuilder(args); // 1. 添加服务到容器 (依赖注入) builder.Services.AddRazorPages(); var app = builder.Build(); // 2. 配置 HTTP 请求处理管道 if (!app.Environment.IsDevelopment()) { app.UseExceptionHandler("/Error"); app.UseHsts(); } app.UseHttpsRedirection(); app.UseStaticFiles(); // 处理静态文件 app.UseRouting(); // 决定路由 app.UseAuthorization(); // 授权 app.MapRazorPages(); // 将 Razor Pages 路由映射到端点 app.Run(); -
常用中间件:
UseStaticFiles: 提供静态文件。UseRouting: 启用路由匹配。UseAuthentication/UseAuthorization: 处理用户认证和授权。MapRazorPages/MapControllerRoute: 将 URL 映射到你的页面或控制器。
c. 依赖注入
这是 ASP.NET Core 的核心设计模式,它是一种实现“控制反转”的技术,让框架负责创建和管理对象,你只需在需要的地方“注入”即可。
-
在
Program.cs中注册服务:builder.Services.AddSingleton<IMyService, MyService>(); // 单例模式 builder.Services.AddScoped<IMyService, MyService>(); // 作用域模式 (每个请求一个实例) builder.Services.AddTransient<IMyService, MyService>(); // 临时模式 (每次获取都创建新实例)
-
在页面/控制器中使用服务:
public class IndexModel : PageModel { private readonly IMyService _myService; // 构造函数注入 public IndexModel(IMyService myService) { _myService = myService; } public void OnGet() { var message = _myService.GetMessage(); // ... } }
第三部分:进阶主题
掌握了基础后,你可以学习更强大的功能。
MVC (Model-View-Controller) 模型
除了 Razor Pages,ASP.NET Core 还支持经典的 MVC 模式,它更适合构建复杂的、API 风格的应用。
- Model: 数据模型,定义你的业务实体。
- View: 视图层,负责显示数据 (HTML)。
- Controller: 控制器,接收 HTTP 请求,处理业务逻辑,并选择返回哪个 View。
动手实践:
- 创建一个新项目:
dotnet new mvc -n MyMvcApp - 学习
Controllers/HomeController.cs是如何处理请求并返回View()的。 - 学习
Views/Home/Index.cshtml是如何显示数据的。
Entity Framework Core (EF Core)
这是微软官方的 ORM (对象关系映射) 框架,让你能用 C# 对象来操作数据库,而不用写 SQL 语句。
- 核心概念:
- DbContext: 数据库上下文,是 EF Core 的核心,负责与数据库交互。
- 实体: 与数据库表对应的 C# 类。
- 迁移: 一种将你的 C# 实体类变更同步到数据库结构的机制。
动手实践 (以 SQL Server LocalDB 为例):
- 创建一个 MVC 或 Razor Pages 项目。
- 安装 NuGet 包:
Microsoft.EntityFrameworkCore.SqlServer,Microsoft.EntityFrameworkCore.Tools。 - 创建一个模型类,
Product.cs。 - 创建一个
DbContext类,AppDbContext.cs。 - 在
Program.cs中注册 DbContext:builder.Services.AddDbContext<AppDbContext>(options => ...); - 使用命令行创建初始迁移:
dotnet ef migrations add InitialCreate - 应用迁移到数据库:
dotnet ef database update - 在 Controller 中使用
AppDbContext来查询和保存数据。
身份验证和授权
保护你的应用,确保只有授权用户才能访问特定资源。
- 身份验证: 验证用户身份。“你是谁?”
- 授权: 决定用户能做什么。“你能访问这个页面吗?”
动手实践:
- 在
Program.cs中添加身份验证服务:builder.Services.AddAuthentication(...). - 在管道中启用身份验证和授权:
app.UseAuthentication();,app.UseAuthorization();. - 在 Controller 或 Page Model 的方法上使用
[Authorize]特性来保护它。 - 使用 ASP.NET Core Identity 来管理用户、角色和登录逻辑。
第四部分:高级主题与最佳实践
API 开发
使用 ASP.NET Core 构建强大的 RESTful API。
- Controller: 返回
IActionResult或JsonResult。 - Model Binding: 自动将 HTTP 请求中的数据绑定到 Action 的参数。
- 数据注解: 使用
[Required],[Range]等特性进行模型验证。 - Swagger/OpenAPI: 使用 Swashbuckle 包自动生成 API 文档。
测试
编写单元测试和集成测试,确保代码质量。
- 单元测试: 测试单个类或方法 (如 Service 层)。
- 集成测试: 测试整个请求管道 (如 Controller 和 View)。
- 推荐工具: xUnit, MSTest, NUnit。
部署
将你的应用发布到服务器或云平台。
- 发布: 使用
dotnet publish命令生成可部署的文件。 - 平台:
- Azure: 微软官方云平台,与 .NET 深度集成。
- Docker: 将应用容器化,实现跨平台部署。
- IIS: 在 Windows Server 上部署的传统方式。
学习路径总结
- 阶段一 (1-2周): 打好基础,精通 C# 和 .NET CLI,创建并运行第一个 Web App,理解
Program.cs和项目结构。 - 阶段二 (2-3周): 掌握核心,深入学习 Razor Pages、中间件、依赖注入,动手做几个简单的 CRUD (增删改查) 页面,不连接数据库。
- 阶段三 (3-4周): 连接数据,学习 EF Core,完成一个完整的、能连接数据库的 CRUD 应用。
- 阶段四 (持续学习): 扩展技能,学习 MVC、身份验证、API 开发、测试和部署,选择一个方向(如前端集成、云原生)进行深入。
推荐资源汇总
- 官方文档 (首选):
- 视频教程:
- Bilibili: 搜索“ASP.NET Core 教程”、“.NET 6/7/8 入门”,有很多优秀的免费系列课程。
- YouTube:
- Fireship: 快速、现代化的 .NET 教程。
- Nick Chapsas (C# Corner): 深入浅出,讲解很多高级概念。
- Microsoft Learn: 官方提供的免费互动式学习路径。
- 社区与博客:
- Stack Overflow: 解决编程问题的最佳去处。
- GitHub: 阅读优秀开源项目的源码。
- .NET Blog: 官方博客,了解最新动态和深度技术文章。
最重要的一点:多动手,多实践! 看再多教程,不如自己亲手写一个项目,祝你学习顺利!
