diff --git "a/\344\273\235\345\207\257\345\205\203/20260112.md" "b/\344\273\235\345\207\257\345\205\203/20260112.md"
new file mode 100644
index 0000000000000000000000000000000000000000..5051a911baed22cc6847ec099dd247abad5b8f79
--- /dev/null
+++ "b/\344\273\235\345\207\257\345\205\203/20260112.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/\344\273\235\345\207\257\345\205\203/20260114.md" "b/\344\273\235\345\207\257\345\205\203/20260114.md"
new file mode 100644
index 0000000000000000000000000000000000000000..05e866225990f9802e2966d4942d2d832721df55
--- /dev/null
+++ "b/\344\273\235\345\207\257\345\205\203/20260114.md"
@@ -0,0 +1,87 @@
+## 笔记
+
+### 新增功能分析
+ - 点击新增按钮,跳转到一个页面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/\344\273\235\345\207\257\345\205\203/20260115.md" "b/\344\273\235\345\207\257\345\205\203/20260115.md"
new file mode 100644
index 0000000000000000000000000000000000000000..a4f153eb4dbaaa7570601bfaa171bd42b59d0d9a
--- /dev/null
+++ "b/\344\273\235\345\207\257\345\205\203/20260115.md"
@@ -0,0 +1,15 @@
+## 笔记
+
+1. 删除功能分析
+ - 点击删除按钮,跳转一个页面B
+ - 页面B中,有提示,询问要不要删除
+ - 询问要不要删除
+ - 如果是,则删除后返回列表页
+ - 如果不是,则直接返回列表页
+
+2. 编辑功能分析
+ - 点击编辑按钮,跳转一个页面C
+ - 在页面C中有展示表单,表单中有原来的数据
+ - 在页面C中,有保存,有取消
+ - 点击保存,则将当前新数据保存到数据库,然后跳转回列表页
+ - 点击取消,则跳转回列表页
\ No newline at end of file
diff --git "a/\344\273\235\345\207\257\345\205\203/20260116.md" "b/\344\273\235\345\207\257\345\205\203/20260116.md"
new file mode 100644
index 0000000000000000000000000000000000000000..848849c1b3a8f7fba25814dc194ca8d5c2dce9ce
--- /dev/null
+++ "b/\344\273\235\345\207\257\345\205\203/20260116.md"
@@ -0,0 +1,30 @@
+## 笔记
+随机数:
+```bash
+using System.Web.Mvc;
+
+public class HomeController : Controller
+{
+ // 示例:生成 [0, 100] 的随机数并返回给视图
+ public ActionResult Index()
+ {
+ // 调用工具类生成随机数
+ int randomNum = RandomHelper.Next(0, 100);
+ // 将随机数传递给视图
+ ViewBag.RandomNumber = randomNum;
+
+ // 也可以生成随机浮点数
+ double randomDouble = RandomHelper.NextDouble();
+ ViewBag.RandomDouble = randomDouble;
+
+ return View();
+ }
+
+ // 示例:接口返回随机数
+ public JsonResult GetRandomNumber()
+ {
+ int randomNum = RandomHelper.Next(10, 20);
+ return Json(new { number = randomNum }, JsonRequestBehavior.AllowGet);
+ }
+}
+```
\ No newline at end of file