diff --git "a/\345\274\240\345\207\257\347\202\230/20260112-mvc.md" "b/\345\274\240\345\207\257\347\202\230/20260112-mvc.md"
new file mode 100644
index 0000000000000000000000000000000000000000..340b509a0913cb9b3dc7d919401540e7f081a64e
--- /dev/null
+++ "b/\345\274\240\345\207\257\347\202\230/20260112-mvc.md"
@@ -0,0 +1,37 @@
+# 笔记
+1. 路由(Routing)(路由是将URL映射到控制器的规则系统。)
+- 默认路由规则(在 Program.cs 中配置):
+```bash
+app.MapControllerRoute(
+ name: "default",
+ pattern: "{controller=Home}/{action=Index}/{id?}");
+```
+- 路由模板解释:
+ - {controller}:控制器名(去掉Controller后缀)
+ - {action}:动作方法名
+ - {id?}:可选参数,? 表示可选
+
+2. 自定义路由特性
+- 可以在控制器或动作方法上使用 [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() { ... }
+}
+```
+4 路由约束
+- 限制参数的类型和格式:
+```bash
+[Route("students/{id:int:min(1)}")] // id必须是大于0的整数
+public IActionResult Details(int id) { ... }
+
+[Route("students/{name:alpha}")] // name只能是字母
+public IActionResult Search(string name) { ... }
\ No newline at end of file
diff --git "a/\345\274\240\345\207\257\347\202\230/20260114-mvc.md" "b/\345\274\240\345\207\257\347\202\230/20260114-mvc.md"
new file mode 100644
index 0000000000000000000000000000000000000000..a6c675814d4a9e112e25e9f3f9b9fbb464e9542e
--- /dev/null
+++ "b/\345\274\240\345\207\257\347\202\230/20260114-mvc.md"
@@ -0,0 +1,86 @@
+# 笔记
+
+### 新增功能分析
+ - 点击新增按钮,跳转到一个页面A
+ - 使用a标签代替原来的新增按钮,有如下几种方式
+ - 新增
+ - 新增
+ - 在页面A中是一个表单,有若干表单项,有一个提交按钮,有一个取消按钮
+ -
+ - 表单项asp-for和模型绑定
+ - 点击提交时,将表单数据保存到数据库表,(成功)后跳转回列表
+ - List list list.Add
+ - 点击取消按钮,跳转回列表页
+
+
+
+
+- 新增关键:必须做前后端双重数据校验,确保数据合法性,新增后需给用户明确的结果反馈。
+- 删除关键:优先增加确认环节防误删,推荐使用 “软删除”,删除操作必须基于唯一主键,同时处理关联数据的异常情况。
+
+```bash
+flowchart LR
+ A[VSCode编写删除按钮+确认弹窗] --> B[Live Server预览确认逻辑]
+ B --> C[VSCode编写Controller接收删除ID]
+ C --> D[VSCode编写Model软删除逻辑]
+ D --> E[VSCode断点调试软删除字段]
+ E --> F[test.http发送DELETE请求测试]
+ F --> G[终端查is_deleted字段验证]
+```
+1. 新增
+```bash
+public IActionResult Create()
+{
+ return View();
+}
+
+// POST: 提交新增数据
+[HttpPost]
+[ValidateAntiForgeryToken]
+public async Task Create([Bind("Id,Name,Age")] Student student)
+{
+ if (ModelState.IsValid) // 断点1:检查模型验证是否通过
+ {
+ _context.Add(student); // 断点2:检查要新增的student数据
+ await _context.SaveChangesAsync(); // 断点3:执行数据库保存
+ return RedirectToAction(nameof(Index));
+ }
+ return View(student);
+}
+```
+2. 删除
+```bash
+public async Task Delete(int? id) // 断点1:检查传入的id是否正确
+{
+ if (id == null || _context.Student == null)
+ {
+ return NotFound();
+ }
+
+ var student = await _context.Student.FirstOrDefaultAsync(m => m.Id == id); // 断点2:检查查询到的学生数据
+ if (student == null)
+ {
+ return NotFound();
+ }
+
+ return View(student);
+}
+
+// POST: 执行删除
+[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/\345\274\240\345\207\257\347\202\230/20260115-mvc.md" "b/\345\274\240\345\207\257\347\202\230/20260115-mvc.md"
new file mode 100644
index 0000000000000000000000000000000000000000..30344427aa879ec3e2da1e9c48c9395923ac28bc
--- /dev/null
+++ "b/\345\274\240\345\207\257\347\202\230/20260115-mvc.md"
@@ -0,0 +1,15 @@
+# 笔记
+ 删除功能分析
+
+点击删除按钮,跳转一个页面B
+页面B中,有提示,询问要不要删除
+询问要不要删除
+如果是,则删除后返回列表页
+如果不是,则直接返回列表页
+编辑功能分析
+
+点击编辑按钮,跳转一个页面C
+在页面C中有展示表单,表单中有原来的数据
+在页面C中,有保存,有取消
+点击保存,则将当前新数据保存到数据库,然后跳转回列表页
+点击取消,则跳转回列表页
\ No newline at end of file
diff --git "a/\345\274\240\345\207\257\347\202\230/20260116-mvc.md" "b/\345\274\240\345\207\257\347\202\230/20260116-mvc.md"
new file mode 100644
index 0000000000000000000000000000000000000000..2d066b83669ab2de848125a3bfeb2f585de0728a
--- /dev/null
+++ "b/\345\274\240\345\207\257\347\202\230/20260116-mvc.md"
@@ -0,0 +1,63 @@
+# 笔记
+# 删除按钮
+## 控制器关键代码(MinController.cs)
+```
+// 展示删除确认页(GET)
+public IActionResult Del(int Id)
+{
+ var min = minList.FirstOrDefault(m => m.Id == Id);
+ if (min == null) return NotFound("数据不存在");
+ return View(min);
+}
+
+// 执行删除(POST,防止GET误删)
+[HttpPost]
+public IActionResult DelConfirmed(int Id)
+{
+ var delItem = minList.FirstOrDefault(m => m.Id == Id);
+ if (delItem != null) minList.Remove(delItem);
+ return RedirectToAction("Index");
+}
+```
+## 列表页(Index.cshtml)
+```
+@{
+ ViewData["Title"] = "初始表格";
+}
+
+
+```
+## 删除确认页(Del.cshtml)
+```
+@{
+ ViewData["Title"] = "删除确认";
+}
+
+确定要删除【@Model.Name】吗?
+
+
+
\ No newline at end of file