From 15c2250bd9530bf53e1e2ae9594714e266879a78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=B9=E8=8B=93=E9=9C=8F?= <15016798+fanglingfei@user.noreply.gitee.com> Date: Mon, 5 Jan 2026 00:07:53 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E7=AC=94=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...55\345\273\272\351\241\265\351\235\242.md" | 63 +++++++++++++++++++ ...1-\345\244\215\345\210\266\345\231\250.md" | 40 ++++++++++++ ...4-\346\216\247\345\210\266\345\231\250.md" | 40 ++++++++++++ 3 files changed, 143 insertions(+) create mode 100644 "\346\226\271\350\213\223\351\234\217/20251230-\346\220\255\345\273\272\351\241\265\351\235\242.md" create mode 100644 "\346\226\271\350\213\223\351\234\217/20251231-\345\244\215\345\210\266\345\231\250.md" create mode 100644 "\346\226\271\350\213\223\351\234\217/20260104-\346\216\247\345\210\266\345\231\250.md" diff --git "a/\346\226\271\350\213\223\351\234\217/20251230-\346\220\255\345\273\272\351\241\265\351\235\242.md" "b/\346\226\271\350\213\223\351\234\217/20251230-\346\220\255\345\273\272\351\241\265\351\235\242.md" new file mode 100644 index 0000000..2cadc81 --- /dev/null +++ "b/\346\226\271\350\213\223\351\234\217/20251230-\346\220\255\345\273\272\351\241\265\351\235\242.md" @@ -0,0 +1,63 @@ +# 笔记 +## 一、核心概念 +### 1. ASP.NET Core +- 跨平台、高性能、开源、模块化的Web框架,课程使用.NET 8(长期支持版) +- 类比:Web应用的“底盘和发动机” + +### 2. MVC模式(学习顺序:C→V→M) +| 组件 | 作用 | 类比 | +|------|------|------| +| Controller(控制器) | 接收请求、协调模型/视图、返回响应 | 服务员 | +| View(视图) | 展示数据、生成HTML、决定页面样式(Razor语法) | 网页设计师 | +| Model(模型) | 定义数据结构、处理业务逻辑、交互数据库 | 数据库管理员 | +- 工作流程:用户请求→控制器→模型→视图→返回响应 + +## 二、开发环境配置 +### 1. 必装软件 +| 软件 | 作用 | 验证/安装要点 | +|------|------|---------------| +| .NET 8 SDK | 核心开发工具包 | 终端执行`dotnet --version`,显示8.0.x | +| VSCode | 代码编辑器 | 常规安装即可 | +| VSCode扩展 | 增强开发体验 | 必装:C#(Microsoft);推荐:C# Dev Kit、SQLite Viewer | + +### 2. 安装步骤 +1. 先装.NET 8 SDK,验证版本 +2. 安装VSCode,再安装指定扩展 + +## 三、创建&MVC项目 +### 1. 命令行创建(推荐) +```bash +# 创建并进入项目目录 +mkdir StudentManagementSystem +cd StudentManagementSystem +# 创建MVC项目 +dotnet new mvc -n StudentManagementSystem +# VSCode打开项目 +code . +``` + +### 2. 核心项目结构 +| 文件夹/文件 | 核心作用 | +|-------------|----------| +| Controllers/HomeController.cs | 默认控制器,处理请求(重点先学) | +| Views/Home/Index.cshtml | 首页视图,展示页面(其次学) | +| Views/Shared/_Layout.cshtml | 布局页(母版页) | +| wwwroot/ | 静态资源(CSS/JS/图片) | +| Program.cs | 程序入口,配置服务/路由/中间件 | +| Models/ | 模型文件夹(最后学) | + +### 3. 关键文件说明 +- Program.cs:注册MVC服务、配置路由(默认路由:`{controller=Home}/{action=Index}/{id?}`) +- HomeController.cs:继承Controller基类,Index()返回首页视图 + +## 四、运行&调试 +### 1. 运行方式 +- 命令行:`dotnet run`,点击终端链接访问 +- VSCode:F5(自动生成launch.json) + +### 2. 调试技巧 +- 断点:行号左侧点击;启动调试:F5 +- 单步执行:F10(逐过程)、F11(逐语句) + +### 3. 运行流程 +`dotnet run`→加载Program.cs→监听端口→浏览器请求→路由匹配控制器→返回视图页面 \ No newline at end of file diff --git "a/\346\226\271\350\213\223\351\234\217/20251231-\345\244\215\345\210\266\345\231\250.md" "b/\346\226\271\350\213\223\351\234\217/20251231-\345\244\215\345\210\266\345\231\250.md" new file mode 100644 index 0000000..55f5754 --- /dev/null +++ "b/\346\226\271\350\213\223\351\234\217/20251231-\345\244\215\345\210\266\345\231\250.md" @@ -0,0 +1,40 @@ +# 笔记 +## 一、控制器核心认知 +### 1. 核心作用 +MVC的“大脑/指挥中心”,负责:接收HTTP请求→处理业务逻辑→调用模型取数据→选视图→传数据给视图 +- 类比:餐厅服务员(接收点单→通知厨房→端菜给顾客) + +### 2. 命名&规范 +- 名称必须以`Controller`结尾(如`StudentController`),否则无法被自动识别 +- 存放位置:`Controllers`文件夹 +- 必须继承`Microsoft.AspNetCore.Mvc.Controller`类 + +### 3. 生命周期 +HTTP请求→路由系统→匹配控制器→创建实例→调用动作方法→返回结果→销毁实例 + +## 二、控制器与动作方法 +### 1. 动作方法(Action Method) +- 控制器中的公共方法,对应可访问的URL +- 常用返回类型:`IActionResult`(及派生类型) +- 核心返回类型示例: + | 类型 | 作用 | 示例 | + |------|------|------| + | ViewResult | 返回视图 | `return View();` | + | JsonResult | 返回JSON | `return Json(data);` | + | RedirectResult | 重定向URL | `return Redirect("/Home");` | + +### 2. 创建控制器的方式 +- 手动创建:`Controllers`文件夹新建`StudentController.cs`,编写代码 +- 命令行创建: + ```bash + dotnet aspnet-codegenerator controller -name StudentController -m Student -dc ApplicationDbContext --relativeFolderPath Controllers --useDefaultLayout --referenceScriptLibraries + ``` + +### 3. 依赖注入 +控制器构造函数接收依赖项(如ILogger),框架自动提供实例: +```csharp +public StudentController(ILogger logger) +{ + _logger = logger; +} +``` \ No newline at end of file diff --git "a/\346\226\271\350\213\223\351\234\217/20260104-\346\216\247\345\210\266\345\231\250.md" "b/\346\226\271\350\213\223\351\234\217/20260104-\346\216\247\345\210\266\345\231\250.md" new file mode 100644 index 0000000..a5d7cdf --- /dev/null +++ "b/\346\226\271\350\213\223\351\234\217/20260104-\346\216\247\345\210\266\345\231\250.md" @@ -0,0 +1,40 @@ +# 笔记 +## 一、路由核心定义 +路由是将URL映射到控制器/动作方法的规则系统,核心作用是解析URL,找到对应的处理逻辑。 + +## 二、默认路由配置 +### 1. 配置位置 +Program.cs中通过`MapControllerRoute`配置: +```csharp +app.MapControllerRoute( + name: "default", + pattern: "{controller=Home}/{action=Index}/{id?}"); +``` + +### 2. 模板解析 +- `{controller}`:控制器名(自动去掉Controller后缀) +- `{action}`:动作方法名 +- `{id?}`:可选参数(`?`表示非必传) +- 等号后为默认值(如未指定控制器/动作,默认走Home/Index) + +### 3. URL映射示例 +| URL | 匹配结果 | +|-----|----------| +| `/` | HomeController.Index() | +| `/Student` | StudentController.Index() | +| `/Student/Details/5` | StudentController.Details(id:5) | + +## 三、自定义路由 +### 1. 特性路由([Route]) +在控制器/动作方法上直接配置,优先级高于默认路由: +```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) { ... } +} +``` \ No newline at end of file -- Gitee From 9709504cb11bb516cf1abebd41f69f463f0a3ce6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=B9=E8=8B=93=E9=9C=8F?= <15016798+fanglingfei@user.noreply.gitee.com> Date: Sun, 11 Jan 2026 22:06:33 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E7=AC=94=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../20260105-\350\247\206\345\233\276.md" | 25 +++++++++++++++++++ .../20260107-\350\247\206\345\233\276.md" | 18 +++++++++++++ .../20260108.md" | 20 +++++++++++++++ .../20260109.md" | 24 ++++++++++++++++++ 4 files changed, 87 insertions(+) create mode 100644 "\346\226\271\350\213\223\351\234\217/20260105-\350\247\206\345\233\276.md" create mode 100644 "\346\226\271\350\213\223\351\234\217/20260107-\350\247\206\345\233\276.md" create mode 100644 "\346\226\271\350\213\223\351\234\217/20260108.md" create mode 100644 "\346\226\271\350\213\223\351\234\217/20260109.md" diff --git "a/\346\226\271\350\213\223\351\234\217/20260105-\350\247\206\345\233\276.md" "b/\346\226\271\350\213\223\351\234\217/20260105-\350\247\206\345\233\276.md" new file mode 100644 index 0000000..2145867 --- /dev/null +++ "b/\346\226\271\350\213\223\351\234\217/20260105-\350\247\206\345\233\276.md" @@ -0,0 +1,25 @@ +## 笔记 +MVC 视图(View)核心笔记 +你需要的是关于 MVC 架构中「视图(View)」的简洁核心笔记,下面我会聚焦视图的核心定位、作用、特性和最佳实践,帮你快速掌握核心要点。 + +一、视图的核心定位 +视图是 MVC 架构的表现层,唯一职责是「展示数据 + 接收用户交互」,不包含业务逻辑,是「数据的可视化呈现载体」。 + +二、核心作用 +数据渲染:接收控制器(Controller)传递的模型(Model)数据,按指定格式(HTML/JSON/ 页面组件等)展示。 +交互入口:捕获用户操作(点击、输入、提交等),将交互事件传递给控制器处理(不自行处理业务)。 +格式适配:支持多端适配(如同一数据可渲染为网页、移动端界面、接口返回的 JSON)。 + +三、核心特性(最佳实践) + +|特性 |核心要求 |反例(禁止做)| +|-----------|--------------------------------|-------------| +|无业务逻辑 |仅做数据展示,不写判断 / 计算逻辑 |在视图中写数据库查询、数据过滤| +|单向依赖 |仅依赖控制器传递的数据,不直接调 Model|视图直接调用 Model 的方法查数据| +|可复用 |抽离公共视图(如页眉、页脚、弹窗) |重复写相同的页面布局代码| +|数据只读 |仅展示数据,不修改 Model 数据 |在视图中直接修改 Model 的属性值| + +四、常见视图类型(Web 开发场景) +模板视图:如 JSP、Thymeleaf、Vue 模板,嵌入变量 / 循环指令渲染动态页面; +API 视图:返回 JSON/XML 格式数据(无界面,供前端 / 第三方调用); +组件化视图:拆分独立组件(如按钮、表单、列表),降低耦合。 \ No newline at end of file diff --git "a/\346\226\271\350\213\223\351\234\217/20260107-\350\247\206\345\233\276.md" "b/\346\226\271\350\213\223\351\234\217/20260107-\350\247\206\345\233\276.md" new file mode 100644 index 0000000..88bca38 --- /dev/null +++ "b/\346\226\271\350\213\223\351\234\217/20260107-\350\247\206\345\233\276.md" @@ -0,0 +1,18 @@ +## 笔记 +MVC 视图(View)核心笔记 +一、核心特性 +被动性:视图不主动获取数据,需控制器驱动。 +示例:页面加载时,视图不会主动请求商品数据,而是等待控制器将数据传入后再渲染。 +可复用性:同一视图可适配不同数据。 +示例:通用的 “分页视图组件”,可复用在商品列表、订单列表、用户列表等不同页面。 +轻量化:仅包含展示相关代码。 + +二、与其他层的关系 +与控制器:视图 ← 控制器(传数据),视图 → 控制器(传操作)。 +示例:控制器处理完 “获取订单列表” 逻辑后,将订单数据传给视图;用户在视图点击 “删除订单”,视图把操作传给控制器。 +与模型:无直接交互,仅消费控制器处理后的模型数据。 + +三、设计原则 +单一职责:只负责展示,不包含判断、数据处理等逻辑; +无状态化:视图本身不存储业务数据,数据完全由外部(控制器 / 模型)提供; +可复用:抽离通用视图组件(如导航栏、分页器),提升复用性。 \ No newline at end of file diff --git "a/\346\226\271\350\213\223\351\234\217/20260108.md" "b/\346\226\271\350\213\223\351\234\217/20260108.md" new file mode 100644 index 0000000..3d197b9 --- /dev/null +++ "b/\346\226\271\350\213\223\351\234\217/20260108.md" @@ -0,0 +1,20 @@ +## 笔记 +## 笔记 + +- mvc视图职责 +```bash + +- 数据展示:将模型数据渲染为HTML/UI +- 用户交互:提供表单、按钮等交互元素 +- 界面结构:定义页面布局和视觉呈现 +- 数据绑定:动态显示模型状态变化 + +``` + +- Razor视图 + +```c# +@model User +

欢迎,@Model.Name

+

上次登录:@Model.LastLogin

+ \ No newline at end of file diff --git "a/\346\226\271\350\213\223\351\234\217/20260109.md" "b/\346\226\271\350\213\223\351\234\217/20260109.md" new file mode 100644 index 0000000..441375e --- /dev/null +++ "b/\346\226\271\350\213\223\351\234\217/20260109.md" @@ -0,0 +1,24 @@ +## 笔记 + +- 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); + } +} -- Gitee