From bf85d06e3a713f98cc94b7cebb965e45c70a2108 Mon Sep 17 00:00:00 2001 From: nanqi0622 Date: Mon, 5 Jan 2026 06:37:31 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...346\220\255\345\273\272MVC\351\241\265\351\235\242md" | 9 +++++++++ .../20251231-\346\250\241\345\236\213.md" | 9 +++++++++ .../20260104-.\350\267\257\347\224\261md" | 9 +++++++++ 3 files changed, 27 insertions(+) create mode 100644 "\351\273\204\347\276\216\347\220\252/20251230-\346\220\255\345\273\272MVC\351\241\265\351\235\242md" create mode 100644 "\351\273\204\347\276\216\347\220\252/20251231-\346\250\241\345\236\213.md" create mode 100644 "\351\273\204\347\276\216\347\220\252/20260104-.\350\267\257\347\224\261md" diff --git "a/\351\273\204\347\276\216\347\220\252/20251230-\346\220\255\345\273\272MVC\351\241\265\351\235\242md" "b/\351\273\204\347\276\216\347\220\252/20251230-\346\220\255\345\273\272MVC\351\241\265\351\235\242md" new file mode 100644 index 0000000..29410b7 --- /dev/null +++ "b/\351\273\204\347\276\216\347\220\252/20251230-\346\220\255\345\273\272MVC\351\241\265\351\235\242md" @@ -0,0 +1,9 @@ +# 笔记 + +第一章:启程 - 搭建开发环境与第一个MVC页面 +任务:创建第一个ASP.NET Core MVC项目,并运行显示“欢迎来到学生管理系统”的页面。 +知识点: +ASP.NET Core与MVC模式简介:理解.NET Core平台优势、MVC(Model-View-Controller)各组件职责。 +开发环境配置:安装Visual Studio (Community版) 及.NET SDK。 +项目创建与结构解析:使用模板创建MVC项目,认识Controllers、Views、Models、wwwroot等核心文件夹。 +运行与调试:使用IIS Express运行项目,理解启动流程(Program.cs)。 \ No newline at end of file diff --git "a/\351\273\204\347\276\216\347\220\252/20251231-\346\250\241\345\236\213.md" "b/\351\273\204\347\276\216\347\220\252/20251231-\346\250\241\345\236\213.md" new file mode 100644 index 0000000..ed2ffef --- /dev/null +++ "b/\351\273\204\347\276\216\347\220\252/20251231-\346\250\241\345\236\213.md" @@ -0,0 +1,9 @@ +# 笔记 + +第二章:模型(Model) - 定义你的数据蓝图 +任务:创建“学生(Student)”模型类,并为其添加数据验证规则。 +知识点: +模型(Model)的作用:作为数据的载体,代表业务实体。 +创建模型类:定义Student类及其属性(Id, Name, Age, Email等)。 +数据注解(Data Annotations):使用[Required], [StringLength], [EmailAddress]等特性为模型添加验证规则。 +安装必要的NuGet包:引入Microsoft.AspNetCore.Mvc.Core(通常已包含) \ No newline at end of file diff --git "a/\351\273\204\347\276\216\347\220\252/20260104-.\350\267\257\347\224\261md" "b/\351\273\204\347\276\216\347\220\252/20260104-.\350\267\257\347\224\261md" new file mode 100644 index 0000000..e943af5 --- /dev/null +++ "b/\351\273\204\347\276\216\347\220\252/20260104-.\350\267\257\347\224\261md" @@ -0,0 +1,9 @@ +# 笔记 + + +任务:创建StudentController,并添加一个动作方法来显示学生列表的视图。 +知识点: +控制器(Controller)的作用:处理用户请求,协调模型和视图。 +创建控制器与动作方法:理解Controller基类、IActionResult返回值。 +从控制器传递数据到视图:使用ViewData、ViewBag或强类型模型(推荐)。 +路由(Routing)基础:理解[Route]特性和默认路由模板({controller=Home}/{action=Index}/{id?})。 \ No newline at end of file -- Gitee From a2ad50c60bcff87a9aa219834424e1be41bb6b32 Mon Sep 17 00:00:00 2001 From: nanqi0622 Date: Sun, 11 Jan 2026 19:47:45 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...345\273\272MVC\351\241\265\351\235\242.md" | 0 .../20260104-\350\267\257\347\224\261.md" | 0 .../20260105-mvc\350\247\206\345\233\276.md" | 0 ...55\346\263\225\345\237\272\347\241\200.md" | 0 .../20260108-\345\244\215\344\271\240.md" | 0 ...14\350\266\205\351\223\276\346\216\245.md" | 26 +++++++++++++++++++ 6 files changed, 26 insertions(+) rename "\351\273\204\347\276\216\347\220\252/20251230-\346\220\255\345\273\272MVC\351\241\265\351\235\242md" => "\351\273\204\347\276\216\347\220\252/20251230-\346\220\255\345\273\272MVC\351\241\265\351\235\242.md" (100%) rename "\351\273\204\347\276\216\347\220\252/20260104-.\350\267\257\347\224\261md" => "\351\273\204\347\276\216\347\220\252/20260104-\350\267\257\347\224\261.md" (100%) create mode 100644 "\351\273\204\347\276\216\347\220\252/20260105-mvc\350\247\206\345\233\276.md" create mode 100644 "\351\273\204\347\276\216\347\220\252/20260107-Razor\350\257\255\346\263\225\345\237\272\347\241\200.md" create mode 100644 "\351\273\204\347\276\216\347\220\252/20260108-\345\244\215\344\271\240.md" create mode 100644 "\351\273\204\347\276\216\347\220\252/20260109-MVC\344\270\255\350\241\250\345\215\225\345\222\214\350\266\205\351\223\276\346\216\245.md" diff --git "a/\351\273\204\347\276\216\347\220\252/20251230-\346\220\255\345\273\272MVC\351\241\265\351\235\242md" "b/\351\273\204\347\276\216\347\220\252/20251230-\346\220\255\345\273\272MVC\351\241\265\351\235\242.md" similarity index 100% rename from "\351\273\204\347\276\216\347\220\252/20251230-\346\220\255\345\273\272MVC\351\241\265\351\235\242md" rename to "\351\273\204\347\276\216\347\220\252/20251230-\346\220\255\345\273\272MVC\351\241\265\351\235\242.md" diff --git "a/\351\273\204\347\276\216\347\220\252/20260104-.\350\267\257\347\224\261md" "b/\351\273\204\347\276\216\347\220\252/20260104-\350\267\257\347\224\261.md" similarity index 100% rename from "\351\273\204\347\276\216\347\220\252/20260104-.\350\267\257\347\224\261md" rename to "\351\273\204\347\276\216\347\220\252/20260104-\350\267\257\347\224\261.md" diff --git "a/\351\273\204\347\276\216\347\220\252/20260105-mvc\350\247\206\345\233\276.md" "b/\351\273\204\347\276\216\347\220\252/20260105-mvc\350\247\206\345\233\276.md" new file mode 100644 index 0000000..e69de29 diff --git "a/\351\273\204\347\276\216\347\220\252/20260107-Razor\350\257\255\346\263\225\345\237\272\347\241\200.md" "b/\351\273\204\347\276\216\347\220\252/20260107-Razor\350\257\255\346\263\225\345\237\272\347\241\200.md" new file mode 100644 index 0000000..e69de29 diff --git "a/\351\273\204\347\276\216\347\220\252/20260108-\345\244\215\344\271\240.md" "b/\351\273\204\347\276\216\347\220\252/20260108-\345\244\215\344\271\240.md" new file mode 100644 index 0000000..e69de29 diff --git "a/\351\273\204\347\276\216\347\220\252/20260109-MVC\344\270\255\350\241\250\345\215\225\345\222\214\350\266\205\351\223\276\346\216\245.md" "b/\351\273\204\347\276\216\347\220\252/20260109-MVC\344\270\255\350\241\250\345\215\225\345\222\214\350\266\205\351\223\276\346\216\245.md" new file mode 100644 index 0000000..990656b --- /dev/null +++ "b/\351\273\204\347\276\216\347\220\252/20260109-MVC\344\270\255\350\241\250\345\215\225\345\222\214\350\266\205\351\223\276\346\216\245.md" @@ -0,0 +1,26 @@ +# 笔记 +1. **核心定义** + - 服务器端处理的特殊HTML标签/属性,简化ASP.NET Core视图开发 + - 替代传统HtmlHelper,语法更贴近原生HTML,自动生成标准HTML代码 + +2. **启用方式** + - 在`_ViewImports.cshtml`中添加核心配置: + ```html + @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers + ``` + +3. **常用核心用法** + - 路由/链接:`asp-controller`/`asp-action`/`asp-route-*`(如``) + - 表单绑定:`asp-for`(自动生成name/id/验证属性,如``) + - 验证提示:`asp-validation-for`(字段验证)、`asp-validation-summary`(整体验证摘要) + - 环境控制:``(区分开发/生产环境显示内容) + +4. **核心优势** + - 符合HTML书写习惯,代码易读易维护 + - 自动处理模型绑定、路由拼接,减少手动编码 + - 内置验证属性生成,简化表单验证开发 + +### 总结 +1. Tag Helpers是HTML增强属性,服务器端解析后生成最终HTML; +2. 核心通过`asp-*`属性实现路由、表单、验证等核心功能; +3. 需在`_ViewImports.cshtml`中启用,是视图开发提效的核心工具。 \ No newline at end of file -- Gitee From b1b58dc8e242f04794861c72296948c6cdbeef3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E7=BE=8E=E7=90=AA?= Date: Sun, 11 Jan 2026 11:29:25 +0000 Subject: [PATCH 3/5] =?UTF-8?q?update=20=E9=BB=84=E7=BE=8E=E7=90=AA/202601?= =?UTF-8?q?05-mvc=E8=A7=86=E5=9B=BE.md.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 黄美琪 --- .../20260105-mvc\350\247\206\345\233\276.md" | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git "a/\351\273\204\347\276\216\347\220\252/20260105-mvc\350\247\206\345\233\276.md" "b/\351\273\204\347\276\216\347\220\252/20260105-mvc\350\247\206\345\233\276.md" index e69de29..6735ab6 100644 --- "a/\351\273\204\347\276\216\347\220\252/20260105-mvc\350\247\206\345\233\276.md" +++ "b/\351\273\204\347\276\216\347\220\252/20260105-mvc\350\247\206\345\233\276.md" @@ -0,0 +1,42 @@ +# 笔记 +1. **核心定义** + URL与控制器+动作方法的匹配规则,实现请求映射。 + +2. **默认路由配置(Program.cs)** + ```csharp + app.MapControllerRoute( + name: "default", + pattern: "{controller=Home}/{action=Index}/{id?}" + ); + ``` + - `controller=Home`:默认控制器为Home + - `action=Index`:默认动作为Index + - `id?`:可选参数,`?`表示非必填 + +3. **URL映射规则** + - `/` → HomeController.Index() + - `/Student` → StudentController.Index() + - `/Student/Details` → StudentController.Details() + - `/Student/Details/5` → StudentController.Details(id=5) + +4. **自定义路由(特性路由)** + 优先级高于默认路由,直接标记在控制器/动作上 + ```csharp + [Route("api/students")] // 控制器级前缀 + public class StudentController : Controller + { + [Route("")] // 匹配 /api/students + public IActionResult Index() { } + + [Route("{id:int}")] // 匹配 /api/students/5 + public IActionResult Details(int id) { } + } + ``` + +5. **路由约束** + 限制参数类型,常用:`int`、`alpha`、`datetime`、`min(1)` + +6. **实战注意点** + - 控制器名必须以`Controller`结尾,URL中省略后缀 + - 特性路由优先级 > 默认路由 + - 可选参数必须加`?`,避免无参数时404 \ No newline at end of file -- Gitee From bcecb612bc3a04ef7d2f768c14ddcebd2b7fe4ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E7=BE=8E=E7=90=AA?= Date: Sun, 11 Jan 2026 11:30:29 +0000 Subject: [PATCH 4/5] =?UTF-8?q?update=20=E9=BB=84=E7=BE=8E=E7=90=AA/202601?= =?UTF-8?q?07-Razor=E8=AF=AD=E6=B3=95=E5=9F=BA=E7=A1=80.md.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 黄美琪 --- ...55\346\263\225\345\237\272\347\241\200.md" | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git "a/\351\273\204\347\276\216\347\220\252/20260107-Razor\350\257\255\346\263\225\345\237\272\347\241\200.md" "b/\351\273\204\347\276\216\347\220\252/20260107-Razor\350\257\255\346\263\225\345\237\272\347\241\200.md" index e69de29..9218b4c 100644 --- "a/\351\273\204\347\276\216\347\220\252/20260107-Razor\350\257\255\346\263\225\345\237\272\347\241\200.md" +++ "b/\351\273\204\347\276\216\347\220\252/20260107-Razor\350\257\255\346\263\225\345\237\272\347\241\200.md" @@ -0,0 +1,22 @@ +# 笔记 + +## 1.1 代码块与表达式 + + ```bash + + @{ var message = "Hello, Razor!"; } + + +

欢迎,@Model.Name!

+ ``` + +## 1.2 控制结构 + + ```bash + @if (Model.Age >= 18) { + 成年 + } + @foreach (var student in Model.Students) { + @student.Name + } + ``` \ No newline at end of file -- Gitee From e38af47eebfdd440080430d221edcb695479ca13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E7=BE=8E=E7=90=AA?= Date: Sun, 11 Jan 2026 11:30:59 +0000 Subject: [PATCH 5/5] =?UTF-8?q?update=20=E9=BB=84=E7=BE=8E=E7=90=AA/202601?= =?UTF-8?q?08-=E5=A4=8D=E4=B9=A0.md.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 黄美琪 --- .../20260108-\345\244\215\344\271\240.md" | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git "a/\351\273\204\347\276\216\347\220\252/20260108-\345\244\215\344\271\240.md" "b/\351\273\204\347\276\216\347\220\252/20260108-\345\244\215\344\271\240.md" index e69de29..a73d04f 100644 --- "a/\351\273\204\347\276\216\347\220\252/20260108-\345\244\215\344\271\240.md" +++ "b/\351\273\204\347\276\216\347\220\252/20260108-\345\244\215\344\271\240.md" @@ -0,0 +1,24 @@ +# 从头搭建一个MVC应用 + +## 新建一个mvc应用 +- dotnet new mvc -n SuperGirl +- 在C#应用中,几乎所有的标识符都采用首字母大写 + +## 搞定控制器 + +- 在Controllers目录下,新建一个文件,名称通常为XXXXController.cs +- 控制器本质上是一个类型 +- 定义一个类型,通常需要写好命名空间(注意命名空间的取值) +- 然后就使用`public class XXXController` +- 再然后,我们需要使用原来定义的控制器功能,所以需要继承Controller这个类型(这个Controller类型的命名空间位于:Microsoft.AspNetCore.Mvc) + +## 搞定控制器方法(默认页面) +- 在控制器中新建一个普通方法 +- 返回类型指定为IActionResult +- 在方法内部的最后返回视图:`return View();` + +## 搞定视图 +- 讨论或者尝试,从控制器向视图传递数据的三种方法 +- `ViewData` +- `ViewBag` +- `强类型语法` -- Gitee