diff --git "a/\344\274\215\345\255\246\345\206\233/20260112-MVC.md" "b/\344\274\215\345\255\246\345\206\233/20260112-MVC.md"
new file mode 100644
index 0000000000000000000000000000000000000000..561dda4b01f7b948fb08f43b6e617f8e6b53d160
--- /dev/null
+++ "b/\344\274\215\345\255\246\345\206\233/20260112-MVC.md"
@@ -0,0 +1,35 @@
+## 笔记
+
+```bash
+app.MapControllerRoute(
+ name: "default",
+ pattern: "{controller=Home}/{action=Index}/{id?}");
+```
+
+- 路由模板解释:
+ - {controller}:控制器名(去掉Controller后缀)
+ - {action}:动作方法名
+ - {id?}:可选参数,? 表示可选
+
+
+ - 路由模板解释:
+ - {controller}:控制器名(去掉Controller后缀)
+ - {action}:动作方法名
+ - {id?}:可选参数,? 表示可选
+
+
+- 可以在控制器或动作方法上使用 [Route] 特性:
+```bash
+[Route("api/students")] // 自定义路由
+public class StudentController : Controller
+{
+ [Route("")] // 对应 /api/students
+ public IActionResult Index() { ... }
+
+ [Route("{id:int}")] // 对应 /api/students/5
+ public IActionResult Details(int id) { ... }
+
+ [Route("add")] // 对应 /api/students/add
+ public IActionResult Create() { ... }
+}
+```
\ No newline at end of file
diff --git "a/\344\274\215\345\255\246\345\206\233/20260114-MVC\346\226\260\345\242\236.md" "b/\344\274\215\345\255\246\345\206\233/20260114-MVC\346\226\260\345\242\236.md"
new file mode 100644
index 0000000000000000000000000000000000000000..b882eaa51e5abe77fbad7964a103394443730c82
--- /dev/null
+++ "b/\344\274\215\345\255\246\345\206\233/20260114-MVC\346\226\260\345\242\236.md"
@@ -0,0 +1,46 @@
+## 笔记
+
+### 新增功能分析
+ - 点击新增按钮,跳转到一个页面A
+ - 使用a标签代替原来的新增按钮,有如下几种方式
+ - 新增
+ - 新增
+ - 在页面A中是一个表单,有若干表单项,有一个提交按钮,有一个取消按钮
+ -
+
+ - 表单项asp-for和模型绑定
+ - 点击提交时,将表单数据保存到数据库表,(成功)后跳转回列表
+ - List list list.Add
+ - 点击取消按钮,跳转回列表页
+
+```
+视图层(View):新增按钮(a 标签实现,两种方式)
+ - 推荐:使用 ASP.NET Core 内置标签助手(自动解析路由,无需硬编码URL,更灵活)
+ ```html
+ 新增
+ ```
+ - 备选:直接硬编码 URL 路径(路径格式:`/控制器名/Action方法名`)
+ ```html
+ 新增
+ ```
+### 删除
+
+ [HttpPost, ActionName("Delete")]
+[ValidateAntiForgeryToken]
+public async Task DeleteConfirmed(int id) // 断点3:确认要删除的id
+
+
+{
+ if (_context.Student == null)
+ {
+ return Problem("Entity set 'AppDbContext.Student' is null.");
+ }
+ var student = await _context.Student.FindAsync(id);
+ if (student != null)
+ {
+ _context.Student.Remove(student); // 断点4:执行删除操作
+ }
+
+ await _context.SaveChangesAsync(); // 断点5:提交删除到数据库
+ return RedirectToAction(nameof(Index));
+}
\ No newline at end of file
diff --git "a/\344\274\215\345\255\246\345\206\233/20260115-MVC.md" "b/\344\274\215\345\255\246\345\206\233/20260115-MVC.md"
new file mode 100644
index 0000000000000000000000000000000000000000..3b37d02d2aee983b2f7aa25628c317f91198338e
--- /dev/null
+++ "b/\344\274\215\345\255\246\345\206\233/20260115-MVC.md"
@@ -0,0 +1,39 @@
+## 笔记
+
+
+### 删除功能
+
+```
+点击删除按钮,跳转一个页面B
+页面B中,有提示,询问要不要删除
+询问要不要删除
+如果是,则删除后返回列表页
+如果不是,则直接返回列表页
+```
+
+```
+[HttpPost, ActionName("Delete")]
+[ValidateAntiForgeryToken]
+public async Task DeleteConfirmed(int id) // 断点3:确认要删除的id
+```
+
+
+### 编辑功能分析
+```
+点击编辑按钮,跳转一个页面C
+在页面C中有展示表单,表单中有原来的数据
+在页面C中,有保存,有取消
+点击保存,则将当前新数据保存到数据库,然后跳转回列表页
+点击取消,则跳转回列表页
+```
+```
+public IActionResult Edit(int id)
+{
+ // 1. 根据ID从模拟集合(或数据库)中查询对应的实体对象
+ var targetModel = 命名List.Find(v => v.Id == id); // Find方法:根据主键ID查找匹配项
+
+ // 2. 合法性校验:判断查询结果是否为空(避免ID无效导致报错)
+ // 若为空返回404 NotFound,若不为空将实体数据传递给编辑视图(用于表单回显)
+ return targetModel == null ? NotFound() : View(targetModel);
+}
+```
\ No newline at end of file
diff --git "a/\344\274\215\345\255\246\345\206\233/20260116-MVC\351\242\230\347\233\256.md" "b/\344\274\215\345\255\246\345\206\233/20260116-MVC\351\242\230\347\233\256.md"
new file mode 100644
index 0000000000000000000000000000000000000000..fe9c8a5152e4c995b95dc2f2d362300219676934
--- /dev/null
+++ "b/\344\274\215\345\255\246\345\206\233/20260116-MVC\351\242\230\347\233\256.md"
@@ -0,0 +1,25 @@
+## 笔记
+
+### (一)新增功能
+1. 触发跳转:点击页面中的「新增」按钮,将跳转至数据录入页面A;其中「新增」按钮采用 `` 标签实现,有两种常用写法:
+ - 基于 ASP.NET Core 标签助手(推荐,支持路由自动解析,无需硬编码URL):
+ ```html
+ 新增
+ ```
+ - 基于硬编码 URL(简单直接,路由变更时需手动修改):
+ ```html
+ 新增
+ ```
+
+
+ 2. 页面A核心内容:包含一个数据录入表单,表单内有若干表单项、「提交」按钮和「取消」按钮。
+ - 表单配置(指定提交目标与请求方式):
+ ```html
+
+ ```
+ - 表单项绑定:使用 `asp-for` 标签助手实现表单与后台模型的自动绑定,简化数据接收与验证。
+3. 按钮功能逻辑:
+ - 提交按钮:点击后将表单数据通过 `POST` 请求提交至后台,后台将数据保存到数据库表(通过集合 `List` 的 `list.Add()` 方法添加数据),保存成功后跳转回数据列表页。
+ - 取消按钮:点击后直接跳转回数据列表页,不执行任何数据保存操作。
+
+