From 1a76ccd15a32f8595b35cc321fdb17091b99f6dc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=BC=A0=E5=87=AF=E7=82=98?= <344917204@qq.com>
Date: Sun, 4 Jan 2026 23:40:55 +0800
Subject: [PATCH 1/2] =?UTF-8?q?=E5=BC=A0=E5=87=AF=E7=82=9807?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../20251229-mvc.md" | 51 ++++++++++++
.../20251231-mvc.md" | 41 ++++++++++
.../20260104-mvc.md" | 78 +++++++++++++++++++
3 files changed, 170 insertions(+)
create mode 100644 "\345\274\240\345\207\257\347\202\230/20251229-mvc.md"
create mode 100644 "\345\274\240\345\207\257\347\202\230/20251231-mvc.md"
create mode 100644 "\345\274\240\345\207\257\347\202\230/20260104-mvc.md"
diff --git "a/\345\274\240\345\207\257\347\202\230/20251229-mvc.md" "b/\345\274\240\345\207\257\347\202\230/20251229-mvc.md"
new file mode 100644
index 0000000..a77942f
--- /dev/null
+++ "b/\345\274\240\345\207\257\347\202\230/20251229-mvc.md"
@@ -0,0 +1,51 @@
+## 学习笔记
+
+说明:本笔记用通俗语言整理ASP.NET Core MVC的核心学习内容,方便快速理解和查阅。
+
+# 一、第一步:搭好开发环境
+
+## 学习目标
+
+搞懂ASP.NET Core MVC的基本概念和框架,用VSCode搭好开发环境,创建并能运行第一个MVC项目;知道项目的基本结构。
+
+# 二、核心知识点
+
+## 1. ASP.NET Core 是什么?
+
+它是一个做网站/应用的框架,核心优点:
+
+① 跨平台(Windows、Mac、Linux都能用);② 运行快,比老版本的ASP.NET好用;③ 免费开源,有很多人维护更新;④ 可按需选择功能,不冗余;⑤ 推荐用.NET 8版本,稳定又好用。
+
+## 2. MVC 模式:按 C→V→M 顺序学
+
+MVC是一种软件设计思路,把功能分成三部分,学习顺序先控制器、再视图、最后模型:
+
+① 控制器(C):像“服务员”,接收用户的请求,协调其他部分,再把结果返回;② 视图(V):像“网页设计师”,决定页面长什么样,用专门的语法展示数据,生成网页给浏览器;③ 模型(M):像“数据库管理员”,负责存数据、定义数据规则、处理业务相关的逻辑。
+
+# 三、怎么用命令创建MVC项目?
+
+## 1. 为什么用命令行?
+
+灵活(随便哪个文件夹都能建)、清楚(知道项目是怎么一步步建出来的)、实用(这个技能在其他开发里也能用)。
+
+## 2. 具体步骤
+
+① 打开终端:Windows按Win+R输cmd/PowerShell,Mac/Linux打开Terminal;② 创建并进入项目文件夹:输入“mkdir 文件夹名”(比如StudentManagementSystem),再输“cd 文件夹名”进入;③ 创建MVC项目:输入“dotnet new mvc -n 项目名”(和文件夹名一致即可);④ 用VSCode打开:输入“code .”。
+
+## 3. 项目结构和关键文件
+
+① 核心文件夹:Controllers(放控制器,比如默认的HomeController)、Views(放网页相关文件,对应控制器的网页和共享网页)、Models(放数据相关的内容,初始为空)、wwwroot(放CSS、JS、图片等静态文件)、Properties(项目启动配置);② 关键文件:Program.cs(程序入口,负责配置功能和运行流程)、appsettings.json(应用的配置信息)、项目名.csproj(项目的核心配置文件);③ 重点说明:Program.cs是程序启动的关键,会配置需要的功能、构建运行流程、监听端口;HomeController里有处理请求的方法,会对应返回指定的网页。
+
+# 四、怎么运行和调试项目?
+
+## 1. 两种运行方式
+
+① 命令行:输入“dotnet run”,启动后按住Ctrl点击终端里的链接(比如https://localhost:7126)就能打开网页;② VSCode配置:按F5或点击“运行和调试”,选择“.NET Core”,会自动生成配置文件,直接启动即可。
+
+## 2. 调试小技巧
+
+① 设断点:在代码行号左边点一下,出现红点就是断点;② 启动调试:按F5;③ 一步步执行:按F10(不进方法内部)、F11(进方法内部);④ 看变量:把鼠标放在变量上,或查看“变量”面板。
+
+## 3. 项目运行流程
+
+输入“dotnet run”→ 加载Program.cs配置功能和运行流程 → 监听端口(比如5000、5001)→ 浏览器访问链接(比如https://localhost:5001)→ 请求经过运行流程 → 匹配到HomeController的处理方法 → 返回对应的网页 → 浏览器显示页面。
\ No newline at end of file
diff --git "a/\345\274\240\345\207\257\347\202\230/20251231-mvc.md" "b/\345\274\240\345\207\257\347\202\230/20251231-mvc.md"
new file mode 100644
index 0000000..d3b950e
--- /dev/null
+++ "b/\345\274\240\345\207\257\347\202\230/20251231-mvc.md"
@@ -0,0 +1,41 @@
+## 笔记
+
+接收请求:捕获用户的 HTTP 请求(如 GET/POST、参数、Cookie 等)
+分发逻辑:调用对应的 Model 层处理数据(查 / 增 / 删 / 改)
+返回响应:将处理结果传递给 View 层渲染,或直接返回 JSON / 重定向
+### 控制器规范
+```
+控制器的命名规范
+名称必须以 Controller 结尾(如 StudentController)
+通常放在 Controllers 文件夹中
+继承 Microsoft.AspNetCore.Mvc.Controller 类
+// 正确的命名
+public class StudentController : Controller
+
+// 错误的命名(不会自动识别为控制器)
+public class StudentManager : Controller
+1.3 控制器的生命周期
+HTTP请求 → 路由系统 → 找到对应控制器 → 创建控制器实例 →
+调用动作方法 → 返回结果 → 销毁控制器实例
+```
+### 如何创建控制器
+```
+ 什么是动作方法(Action Method)?
+控制器中的公共方法(public method)
+通常返回 IActionResult 或其派生类型
+每个动作方法对应一个用户可访问的URL
+public class StudentController : Controller
+{
+ // 动作方法:显示学生列表
+ public IActionResult Index()
+ {
+ return View(); // 返回视图
+ }
+
+ // 动作方法:显示学生详情
+ public IActionResult Details(int id)
+ {
+ // 处理逻辑
+ return View();
+ }
+}
\ No newline at end of file
diff --git "a/\345\274\240\345\207\257\347\202\230/20260104-mvc.md" "b/\345\274\240\345\207\257\347\202\230/20260104-mvc.md"
new file mode 100644
index 0000000..f7a6a14
--- /dev/null
+++ "b/\345\274\240\345\207\257\347\202\230/20260104-mvc.md"
@@ -0,0 +1,78 @@
+## 笔记
+控制器的桥梁作用:强调控制器连接用户请求、模型数据和视图显示
+动作方法对应URL:让学生理解URL与控制器方法的对应关系
+数据传递方式选择:讲解三种方式的适用场景,强调强类型模型的优势
+路由配置的重要性:演示不同URL如何映射到不同控制器方法
+## 练习
+- 1. 练习1
+- 源代码
+```
+
+@{
+ ViewData["Title"] = "学生列表(分页)";
+ // 从ViewBag获取分页参数
+ int currentPage = ViewBag.CurrentPage;
+ int pageSize = ViewBag.PageSize;
+ int totalPages = ViewBag.TotalPages;
+ int totalCount = ViewBag.TotalCount;
+}
+
+
学生列表
+总数据量:@totalCount 条 | 每页@pageSize 条 | 共@totalPages 页 | 当前第@currentPage 页
+
+
+
+
+
+ | ID |
+ 姓名 |
+ 专业 |
+ 年龄 |
+
+
+
+ @foreach (var student in Model)
+ {
+
+ | @student.Id |
+ @student.Name |
+ @student.Major |
+ @student.Age |
+
+ }
+
+
+
+
+
+
+
+
+s
\ No newline at end of file
--
Gitee
From 2374834fdeaa22b30cc8947f5745ac3226208e45 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=BC=A0=E5=87=AF=E7=82=98?= <344917204@qq.com>
Date: Sun, 11 Jan 2026 19:57:31 +0800
Subject: [PATCH 2/2] =?UTF-8?q?=E5=BC=A0=E5=87=AF=E7=82=9807?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
...00\345\217\221\347\216\257\345\242\203.md" | 0
...vc\346\216\247\345\210\266\345\231\250.md" | 0
.../20260104-mvc\350\267\257\347\224\261.md" | 0
.../20260105-mvc\345\207\272\345\205\245.md" | 18 ++++++++++
...vc\346\216\247\345\210\266\345\231\250.md" | 36 +++++++++++++++++++
.../20260108-mvc\350\247\206\345\233\276.md" | 20 +++++++++++
.../20260109-mvc\346\250\241\345\236\213.md" | 26 ++++++++++++++
7 files changed, 100 insertions(+)
rename "\345\274\240\345\207\257\347\202\230/20251229-mvc.md" => "\345\274\240\345\207\257\347\202\230/20251229-mvc\345\274\200\345\217\221\347\216\257\345\242\203.md" (100%)
rename "\345\274\240\345\207\257\347\202\230/20251231-mvc.md" => "\345\274\240\345\207\257\347\202\230/20251231-mvc\346\216\247\345\210\266\345\231\250.md" (100%)
rename "\345\274\240\345\207\257\347\202\230/20260104-mvc.md" => "\345\274\240\345\207\257\347\202\230/20260104-mvc\350\267\257\347\224\261.md" (100%)
create mode 100644 "\345\274\240\345\207\257\347\202\230/20260105-mvc\345\207\272\345\205\245.md"
create mode 100644 "\345\274\240\345\207\257\347\202\230/20260107-mvc\346\216\247\345\210\266\345\231\250.md"
create mode 100644 "\345\274\240\345\207\257\347\202\230/20260108-mvc\350\247\206\345\233\276.md"
create mode 100644 "\345\274\240\345\207\257\347\202\230/20260109-mvc\346\250\241\345\236\213.md"
diff --git "a/\345\274\240\345\207\257\347\202\230/20251229-mvc.md" "b/\345\274\240\345\207\257\347\202\230/20251229-mvc\345\274\200\345\217\221\347\216\257\345\242\203.md"
similarity index 100%
rename from "\345\274\240\345\207\257\347\202\230/20251229-mvc.md"
rename to "\345\274\240\345\207\257\347\202\230/20251229-mvc\345\274\200\345\217\221\347\216\257\345\242\203.md"
diff --git "a/\345\274\240\345\207\257\347\202\230/20251231-mvc.md" "b/\345\274\240\345\207\257\347\202\230/20251231-mvc\346\216\247\345\210\266\345\231\250.md"
similarity index 100%
rename from "\345\274\240\345\207\257\347\202\230/20251231-mvc.md"
rename to "\345\274\240\345\207\257\347\202\230/20251231-mvc\346\216\247\345\210\266\345\231\250.md"
diff --git "a/\345\274\240\345\207\257\347\202\230/20260104-mvc.md" "b/\345\274\240\345\207\257\347\202\230/20260104-mvc\350\267\257\347\224\261.md"
similarity index 100%
rename from "\345\274\240\345\207\257\347\202\230/20260104-mvc.md"
rename to "\345\274\240\345\207\257\347\202\230/20260104-mvc\350\267\257\347\224\261.md"
diff --git "a/\345\274\240\345\207\257\347\202\230/20260105-mvc\345\207\272\345\205\245.md" "b/\345\274\240\345\207\257\347\202\230/20260105-mvc\345\207\272\345\205\245.md"
new file mode 100644
index 0000000..4d7bd27
--- /dev/null
+++ "b/\345\274\240\345\207\257\347\202\230/20260105-mvc\345\207\272\345\205\245.md"
@@ -0,0 +1,18 @@
+## 笔记
+
+1. 部分视图和视图组件有什么区别?
+区别:
+ - 部分视图:只包含HTML片段,没有业务逻辑
+ - 视图组件:包含HTML和业务逻辑,更独立
+
+- 选择建议:
+ - 简单重用HTML片段 → 部分视图
+ - 需要业务逻辑的独立组件 → 视图组件
+**工作流程**:
+
+1. 用户通过View交互
+2. Controller接收请求
+3. Controller调用Model处理业务
+4. Model更新数据并返回结果
+5. Controller将结果传递给View
+6. View更新界面展示
\ No newline at end of file
diff --git "a/\345\274\240\345\207\257\347\202\230/20260107-mvc\346\216\247\345\210\266\345\231\250.md" "b/\345\274\240\345\207\257\347\202\230/20260107-mvc\346\216\247\345\210\266\345\231\250.md"
new file mode 100644
index 0000000..71af8a6
--- /dev/null
+++ "b/\345\274\240\345\207\257\347\202\230/20260107-mvc\346\216\247\345\210\266\345\231\250.md"
@@ -0,0 +1,36 @@
+## 笔记
+
+**控制器是MVC的协调中心**,接收用户请求,协调模型和视图完成响应。
+
+**核心职责:**
+
+1. **请求处理**:接收并验证用户输入
+2. **业务协调**:调用模型执行业务逻辑
+3. **数据传递**:将处理结果传递给视图
+4. **流程控制**:决定下一步显示哪个视图
+
+**设计原则:**
+
+- 保持“瘦控制器”,业务逻辑应放在模型中
+- 单一职责,每个控制器方法专注一个功能
+- 避免直接在控制器中操作数据库
+- 将数据验证委托给模型或专门的验证器
+
+**典型工作流:**
+用户请求 → 路由解析 → 控制器方法 → 调用模型 → 返回结果 → 渲染视图
+
+**示例(伪代码):**
+
+```java
+public class UserController {
+ public ActionResult Login(LoginRequest request) {
+ var user = userModel.Validate(request); // 调用模型
+ if(user != null) {
+ return View("Dashboard", user); // 传递数据到视图
+ }
+ return View("LoginError");
+ }
+}
+```
+
+控制器是MVC的“交通警察”,应专注流程控制而非业务实现。
\ No newline at end of file
diff --git "a/\345\274\240\345\207\257\347\202\230/20260108-mvc\350\247\206\345\233\276.md" "b/\345\274\240\345\207\257\347\202\230/20260108-mvc\350\247\206\345\233\276.md"
new file mode 100644
index 0000000..7cd85bf
--- /dev/null
+++ "b/\345\274\240\345\207\257\347\202\230/20260108-mvc\350\247\206\345\233\276.md"
@@ -0,0 +1,20 @@
+## 笔记
+- 新建mvc应用
+ - dotnet new mvc -n 名称(在C#应用内,几乎所有标识符都用首字母大写);
+- 搞定控制器
+ - 在Controllers目录下,新建文件,命名通常为:XXXController.cs
+ - 控制器本质上一个类型
+ - 定义一个类型,通常需要写好命名空间(注意取值)
+ - 然后使用`public class XXXcontroller`
+ - 需要使用原来定义的控制器功能,需要继承`Controller`类型(`Controller`类型的命名空间位于:`Microsoft.AspNetCore.Mvc`)
+
+## 控制器方法(默认页)
+- 控制器中新建一个普通方法
+- 放回类型制定为`IActionResult`
+- 方法内部的最后返回视图:`return View();`
+
+## 搞定视图
+- 控制器向视图传递数据是那种方法
+ - `ViewData`
+ - `ViewBag`
+ - `强类型语法`
\ No newline at end of file
diff --git "a/\345\274\240\345\207\257\347\202\230/20260109-mvc\346\250\241\345\236\213.md" "b/\345\274\240\345\207\257\347\202\230/20260109-mvc\346\250\241\345\236\213.md"
new file mode 100644
index 0000000..d6892b5
--- /dev/null
+++ "b/\345\274\240\345\207\257\347\202\230/20260109-mvc\346\250\241\345\236\213.md"
@@ -0,0 +1,26 @@
+## 笔记
+
+- mvc模型核心职责
+```bash
+
+- 数据管理: 定义数据结构、持久化操作
+- 业务逻辑:实现核心计算规则和业务流程
+- 数据验证:确保数据完整性和有效性
+- 状态管理:维护应用状态变更
+
+```
+
+- 示例代码
+```c#
+public class UserModel {
+ public User ValidateLogin(string username, string password) {
+ var user = db.FindUser(username);
+ return VerifyPassword(user, password) ? user : null;
+ }
+
+ public bool UpdateProfile(User user) {
+ return Validate(user) && db.Update(user);
+ }
+}
+
+```
\ No newline at end of file
--
Gitee