From d66d4e280df5a17894972576de0ee7455a50f2d5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=86=89=E5=BD=AC=E7=92=90?= <2178814089@qq.com>
Date: Sun, 11 Jan 2026 19:21:54 +0800
Subject: [PATCH 1/7] zuoye
---
.../20251229-\347\254\224\350\256\260.md" | 65 +++++++++++++++++++
1 file changed, 65 insertions(+)
create mode 100644 "\345\206\211\345\275\254\347\222\220/20251229-\347\254\224\350\256\260.md"
diff --git "a/\345\206\211\345\275\254\347\222\220/20251229-\347\254\224\350\256\260.md" "b/\345\206\211\345\275\254\347\222\220/20251229-\347\254\224\350\256\260.md"
new file mode 100644
index 0000000..e234e8b
--- /dev/null
+++ "b/\345\206\211\345\275\254\347\222\220/20251229-\347\254\224\350\256\260.md"
@@ -0,0 +1,65 @@
+
+---
+
+### **知识点4:在VSCode中运行与调试**
+
+#### **4.1 运行项目**
+在VSCode中有多种方式运行项目:
+
+**方式1:使用命令行**
+```bash
+dotnet run
+```
+程序启动后,按Ctrl+点击终端中的链接(如:https://localhost:7126)
+
+**方式2:使用VSCode运行配置**
+1. 按F5或点击"运行和调试"侧边栏
+2. 选择".NET Core"环境
+3. VSCode会自动创建`.vscode/launch.json`配置文件
+
+#### **4.2 VSCode调试技巧**
+- **设置断点**:在代码行号左侧点击,出现红点
+- **启动调试**:按F5
+- **单步执行**:F10(逐过程)、F11(逐语句)
+- **查看变量**:鼠标悬停或查看"变量"面板
+
+#### **4.3 项目运行流程**
+```
+dotnet run
+ ↓
+加载Program.cs → 配置服务 → 构建中间件管道
+ ↓
+监听端口(如:5000, 5001)
+ ↓
+浏览器访问 https://localhost:5001
+ ↓
+请求经过中间件管道
+ ↓
+路由匹配到HomeController.Index()
+ ↓
+返回Views/Home/Index.cshtml
+ ↓
+浏览器显示页面
+```
+
+---
+
+### **步骤2:运行项目查看效果**
+1. 打开终端(Ctrl+`)
+2. 输入命令:
+```bash
+dotnet run
+```
+3. 终端显示:
+```
+正在生成...
+info: Microsoft.Hosting.Lifetime[14]
+ Now listening on: https://localhost:7126
+info: Microsoft.Hosting.Lifetime[14]
+ Now listening on: http://localhost:5256
+info: Microsoft.Hosting.Lifetime[0]
+ Application started. Press Ctrl+C to shut down.
+```
+4. 按Ctrl+点击 `https://localhost:7126` 链接
+
+
--
Gitee
From 3df3e13fdea0f72ce13455dbe273cff6333ffd2e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=86=89=E5=BD=AC=E7=92=90?= <2178814089@qq.com>
Date: Sun, 11 Jan 2026 19:22:48 +0800
Subject: [PATCH 2/7] zuoye
---
.../20251231-\347\254\224\350\256\260.md" | 125 ++++++++++++++++++
1 file changed, 125 insertions(+)
create mode 100644 "\345\206\211\345\275\254\347\222\220/20251231-\347\254\224\350\256\260.md"
diff --git "a/\345\206\211\345\275\254\347\222\220/20251231-\347\254\224\350\256\260.md" "b/\345\206\211\345\275\254\347\222\220/20251231-\347\254\224\350\256\260.md"
new file mode 100644
index 0000000..55f2f98
--- /dev/null
+++ "b/\345\206\211\345\275\254\347\222\220/20251231-\347\254\224\350\256\260.md"
@@ -0,0 +1,125 @@
+### **步骤2:运行项目查看效果**
+1. 打开终端(Ctrl+`)
+2. 输入命令:
+```bash
+dotnet run
+```
+3. 终端显示:
+```
+正在生成...
+info: Microsoft.Hosting.Lifetime[14]
+ Now listening on: https://localhost:7126
+info: Microsoft.Hosting.Lifetime[14]
+ Now listening on: http://localhost:5256
+info: Microsoft.Hosting.Lifetime[0]
+ Application started. Press Ctrl+C to shut down.
+```
+4. 按Ctrl+点击 `https://localhost:7126` 链接
+
+### **步骤3:查看运行效果**
+
+
+---
+
+## **4. 动手练习**
+
+### **练习1:修改导航栏**
+打开 `Views/Shared/_Layout.cshtml`,找到导航栏部分,修改菜单项:
+
+```html
+
+```
+
+### **练习2:更改页面标题**
+修改 `_Layout.cshtml` 中的 `
` 标签:
+```html
+@ViewData["Title"] - 学生信息管理系统 (.NET 8)
+```
+
+### **练习3:体验命令行操作**
+在终端中尝试以下命令,观察结果:
+```bash
+# 查看可用的项目模板
+dotnet new list
+
+# 查看项目信息
+dotnet --info
+
+# 恢复NuGet包(如果缺少依赖)
+dotnet restore
+
+# 清理生成文件
+dotnet clean
+
+# 发布项目(生成可部署文件)
+dotnet publish -c Release
+```
+
+---
+
+## **5. 常见问题解答**
+
+### **Q1:运行`dotnet run`时提示"No project found"?**
+**解决方案**:
+```bash
+# 确保在项目目录中(有.csproj文件的目录)
+cd StudentManagementSystem
+
+# 或者指定项目文件
+dotnet run --project StudentManagementSystem.csproj
+```
+
+### **Q2:VSCode提示"找不到命名空间"?**
+**解决方案**:
+1. 确保安装了C#扩展
+2. 在终端运行:`dotnet restore`
+3. 重启VSCode
+4. 如果仍不行,检查`.csproj`文件中的包引用
+
+### **Q3:端口被占用怎么办?**
+**解决方案**:
+1. 停止当前程序(在终端按Ctrl+C)
+2. 修改 `Properties/launchSettings.json`:
+```json
+"applicationUrl": "https://localhost:5001;http://localhost:5000"
+```
+3. 或者使用指定端口运行:
+```bash
+dotnet run --urls "https://localhost:6000;http://localhost:6001"
+```
+
+### **Q4:如何查看项目依赖的NuGet包?**
+```bash
+# 查看项目引用的包
+dotnet list package
+
+# 添加新包(后续会用到)
+dotnet add package Microsoft.EntityFrameworkCore.Sqlite
+```
+
+---
+
--
Gitee
From 3743fce3d12a46cac0fe7e9efe5749b65112967a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=86=89=E5=BD=AC=E7=92=90?= <2178814089@qq.com>
Date: Sun, 11 Jan 2026 19:23:28 +0800
Subject: [PATCH 3/7] zuoye
---
.../20260104-\347\254\224\350\256\260.md" | 49 +++++++++++++++++++
1 file changed, 49 insertions(+)
create mode 100644 "\345\206\211\345\275\254\347\222\220/20260104-\347\254\224\350\256\260.md"
diff --git "a/\345\206\211\345\275\254\347\222\220/20260104-\347\254\224\350\256\260.md" "b/\345\206\211\345\275\254\347\222\220/20260104-\347\254\224\350\256\260.md"
new file mode 100644
index 0000000..b8c290f
--- /dev/null
+++ "b/\345\206\211\345\275\254\347\222\220/20260104-\347\254\224\350\256\260.md"
@@ -0,0 +1,49 @@
+视图
+```cs
+
+@model StudentManagementSystem.Models.Student:
+
+
+--------------------------------
+
+@using StudentManagementSystem.Models
+
+
+@{
+ Layout = "_Layout";
+ //若写在:_ViewStart.cshtml 则默认所有视图都使用 Shared/_Layout.cshtml
+ //可以是null,是不使用任何布局页
+}
+
+
+@{
+ 1.ViewData["Title"] = "学生详情";
+ 2.ViewBag.PageName = "Student Details";
+ 3.强类型
+}
+```
+```html
+@{
+ Layout = "_Layout";
+ ViewData["Title"] = "学生列表";
+}
+
+
+
学生列表
+
+
+
+@section Styles {
+
+}
+
+@section Scripts {
+
+}
+```
\ No newline at end of file
--
Gitee
From b34371492af56c6b6af10485179e7660fc4259b0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=86=89=E5=BD=AC=E7=92=90?= <2178814089@qq.com>
Date: Sun, 11 Jan 2026 19:24:02 +0800
Subject: [PATCH 4/7] zuoye
---
.../20260107-\347\254\224\350\256\260.md" | 13 +++++++++++++
1 file changed, 13 insertions(+)
create mode 100644 "\345\206\211\345\275\254\347\222\220/20260107-\347\254\224\350\256\260.md"
diff --git "a/\345\206\211\345\275\254\347\222\220/20260107-\347\254\224\350\256\260.md" "b/\345\206\211\345\275\254\347\222\220/20260107-\347\254\224\350\256\260.md"
new file mode 100644
index 0000000..f5a2e8a
--- /dev/null
+++ "b/\345\206\211\345\275\254\347\222\220/20260107-\347\254\224\350\256\260.md"
@@ -0,0 +1,13 @@
+创建项目步骤
+```bash
+步骤1:打开终端
+ Windows: 按Win+R,输入cmd或使用PowerShell
+ Mac/Linux: 打开Terminal
+步骤2:创建项目目录并进入
+ mkdir StudentManagementSystem
+ cd StudentManagementSystem
+步骤3:创建MVC项目
+ dotnet new mvc -n StudentManagementSystem
+步骤4:用VSCode打开项目
+ code .
+```
\ No newline at end of file
--
Gitee
From 93792b9f8dc770dd43d3dffd343746e070b9817c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=86=89=E5=BD=AC=E7=92=90?= <2178814089@qq.com>
Date: Sun, 11 Jan 2026 19:24:40 +0800
Subject: [PATCH 5/7] zuopye
---
.../20260108-\347\254\224\350\256\260.md" | 14 ++++++++++++++
1 file changed, 14 insertions(+)
create mode 100644 "\345\206\211\345\275\254\347\222\220/20260108-\347\254\224\350\256\260.md"
diff --git "a/\345\206\211\345\275\254\347\222\220/20260108-\347\254\224\350\256\260.md" "b/\345\206\211\345\275\254\347\222\220/20260108-\347\254\224\350\256\260.md"
new file mode 100644
index 0000000..eb0ad1f
--- /dev/null
+++ "b/\345\206\211\345\275\254\347\222\220/20260108-\347\254\224\350\256\260.md"
@@ -0,0 +1,14 @@
+form 标签表单提交 asp-\*属性
+
+作用:自动生成 form 标签 action 属性,匹配后端路由提交表单,替代 Html.BeginForm。
+
+
+常用 asp-\*
+
+| 标签+属性 | 适用标签 | 详细作用 | 是否路由匹配 |
+| -------------- | ------------ | -------------------------------- | ------------ |
+| asp-controller | a、form | 指定控制器名,无 Controller 后缀 | 是 |
+| asp-action | a、form | 指定 Action 方法名 | 是 |
+| asp-route-xxx | a、form | 传递路由参数,匹配 Action 形参 | 是 |
+| asp-method | form | 指定请求方式,默认 post | 是 |
+| asp-for | 所有表单控件 | 绑定模型属性,自动生成 id/name | 否 |
\ No newline at end of file
--
Gitee
From a638ea4cf176976ccda3ffbb3961678991f635a8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=86=89=E5=BD=AC=E7=92=90?= <2178814089@qq.com>
Date: Sun, 11 Jan 2026 19:25:15 +0800
Subject: [PATCH 6/7] zuoye
---
.../20260109-\347\254\224\350\256\260.md" | 47 +++++++++++++++++++
1 file changed, 47 insertions(+)
create mode 100644 "\345\206\211\345\275\254\347\222\220/20260109-\347\254\224\350\256\260.md"
diff --git "a/\345\206\211\345\275\254\347\222\220/20260109-\347\254\224\350\256\260.md" "b/\345\206\211\345\275\254\347\222\220/20260109-\347\254\224\350\256\260.md"
new file mode 100644
index 0000000..29ac267
--- /dev/null
+++ "b/\345\206\211\345\275\254\347\222\220/20260109-\347\254\224\350\256\260.md"
@@ -0,0 +1,47 @@
+# 一、数据验证体系(前后端双验证)
+## 1. 模型验证(规则统一定义)
+- 核心:在`Student`模型类中通过`System.ComponentModel.DataAnnotations`特性定义验证规则,前后端共用
+- 常用特性:
+ - `[Required]`:必填项验证(自定义错误提示)
+ - `[StringLength/Range]`:长度/数值范围验证
+ - `[EmailAddress/RegularExpression]`:格式验证(邮箱、手机号等)
+ - `[Display]`:设置字段友好显示名
+
+## 2. 客户端验证(前端即时反馈)
+- 依赖:引入`jquery.validate.min.js` + `jquery.validate.unobtrusive.min.js`(通常放在`@section Scripts`中)
+- 生效:框架自动将模型验证规则转为`data-*`属性,表单提交前在浏览器端验证,无需后端交互
+- 展示:通过`asp-validation-for`显示错误提示,提升用户体验
+
+## 3. 服务器端验证(后端安全兜底)
+- 核心:控制器Action中通过`ModelState.IsValid`检查验证状态(不可省略,客户端验证可被绕过)
+- 逻辑:验证失败返回表单视图(保留用户输入),验证成功执行业务逻辑(如保存数据)
+
+# 二、前端交互与表单处理
+## 1. Razor与JavaScript交互
+- 方式:在JS中嵌入Razor变量,实现服务端数据向客户端传递
+- 示例:`var studentId = @Model.Id;`、`@Html.Raw(Json.Serialize(Model))`序列化整个模型
+
+## 2. 异步表单提交
+| 方式 | 核心特点 | 关键语法 |
+|------------|------------------------------|-----------------------------------|
+| jQuery AJAX| 基于回调,兼容性好 | `$.ajax({url/method/data/success})` |
+| Fetch API | 现代方式,支持Promise/async | `await fetch(url, {method/body})` |
+| 核心动作 | 阻止传统提交(`e.preventDefault()`)、序列化表单数据 | - |
+
+# 三、学生管理系统核心实现(作业示例)
+## 1. 核心文件与功能
+| 文件/模块 | 核心功能 | 关键要点 |
+|--------------------------|-------------------------------------------|---------------------------------------|
+| Models\Student.cs | 定义学生模型(Id/Name/Age/Gender) | 含无参/有参构造函数,属性非空约束 |
+| Controllers\StudentController.cs | 学生增删查(Index/Add/Delete) | 静态列表存储数据;Add区分GET(展示表单)/POST(保存数据);Delete通过Id删除 |
+| Views\Student\Add.cshtml | 新增学生表单 | 基于`asp-for`绑定模型;表单通过`asp-controller/action`指定提交目标 |
+| Views\Student\Index.cshtml | 学生列表展示 | 遍历模型显示数据;性别通过三元表达式转换(1=男/2=女);删除按钮通过`asp-route-id`传参 |
+
+## 2. 路由与标签助手
+- 核心:`a`标签通过`asp-controller/action/route-参数名`实现跳转(如新增/删除按钮);表单通过`asp-*`属性自动生成action
+- 规则:控制器名无`Controller`后缀,参数名大小写严格匹配
+
+# 核心总结
+1. 数据验证遵循「模型定义规则、前端即时验证、后端最终校验」原则,二者缺一不可;
+2. 前端交互可通过Razor传参+异步提交实现无刷新体验,支持jQuery/Fetch两种方式;
+3. 学生管理系统核心是控制器CRUD逻辑+Razor视图绑定,依托标签助手简化路由与表单配置。
\ No newline at end of file
--
Gitee
From 72711c3ac7259bc525e6890ba77615b36f6505bf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=86=89=E5=BD=AC=E7=92=90?= <2178814089@qq.com>
Date: Sun, 11 Jan 2026 21:27:51 +0800
Subject: [PATCH 7/7] zuoye
---
.../20260105-\347\254\224\350\256\260.md" | 10 ++++++++++
1 file changed, 10 insertions(+)
create mode 100644 "\345\206\211\345\275\254\347\222\220/20260105-\347\254\224\350\256\260.md"
diff --git "a/\345\206\211\345\275\254\347\222\220/20260105-\347\254\224\350\256\260.md" "b/\345\206\211\345\275\254\347\222\220/20260105-\347\254\224\350\256\260.md"
new file mode 100644
index 0000000..fbbd001
--- /dev/null
+++ "b/\345\206\211\345\275\254\347\222\220/20260105-\347\254\224\350\256\260.md"
@@ -0,0 +1,10 @@
+## MVC视图(View)与Razor语法笔记
+
+### 核心概念
+视图负责将数据渲染成用户可见的HTML页面,使用Razor语法混合HTML与C#代码。
+
+### Razor语法要点
+- **表达式**: `@变量名` 或 `@DateTime.Now` 输出内容
+- **代码块**: `@{ var x = 10; }` 执行多行C#代码
+- **控制结构**: `@if(){}` `@foreach(){}` 控制流程
+- **指令**: `@model 模型类型` 指定强类型模型
--
Gitee