diff --git "a/\351\231\210\347\200\232\346\230\261/20251229-mvc\345\274\200\345\217\221\347\216\257\345\242\203.md" "b/\351\231\210\347\200\232\346\230\261/20251229-mvc\345\274\200\345\217\221\347\216\257\345\242\203.md" new file mode 100644 index 0000000000000000000000000000000000000000..1680fe5906484788a38e90775b77a91a67150dfd --- /dev/null +++ "b/\351\231\210\347\200\232\346\230\261/20251229-mvc\345\274\200\345\217\221\347\216\257\345\242\203.md" @@ -0,0 +1,23 @@ + +- 使用命令行创建MVC项目 +3.1 为什么使用命令行? +更灵活:可以在任何目录创建项目 +更透明:了解项目创建的每一个步骤 +技能通用:命令行技能在其他开发中也会用到 +3.2 创建项目步骤 +步骤1:打开终端 + +Windows: 按Win+R,输入cmd或使用PowerShell +Mac/Linux: 打开Terminal +步骤2:创建项目目录并进入 + +mkdir StudentManagementSystem +cd StudentManagementSystem +步骤3:创建MVC项目 + +dotnet new mvc -n StudentManagementSystem +步骤4:用VSCode打开项目 + +code . +3.3 项目结构解析 +项目创建成功后,在VSCode中查看项目结构 diff --git "a/\351\231\210\347\200\232\346\230\261/20251231-mvc\346\216\247\345\210\266\345\231\250.md" "b/\351\231\210\347\200\232\346\230\261/20251231-mvc\346\216\247\345\210\266\345\231\250.md" new file mode 100644 index 0000000000000000000000000000000000000000..c75f7f3eeca2a8753d28bdc2a46ec719bcab95f8 --- /dev/null +++ "b/\351\231\210\347\200\232\346\230\261/20251231-mvc\346\216\247\345\210\266\345\231\250.md" @@ -0,0 +1,20 @@ +- 接收请求:捕获用户的 HTTP 请求(如 GET/POST、参数、Cookie 等) 分发逻辑:调用对应的 Model 层处理数据(查 / 增 / 删 / 改) 返回响应:将处理结果传递给 View 层渲染,或直接返回 JSON / 重定向 +- 什么是动作方法(Action Method)? +控制器中的公共方法(public method) +通常返回 IActionResult 或其派生类型 +每个动作方法对应一个用户可访问的URL +public class StudentController : Controller +{ + // 动作方法:显示学生列表 + public IActionResult Index() + { + return View(); // 返回视图 + } + + // 动作方法:显示学生详情 + public IActionResult Details(int id) + { + // 处理逻辑 + return View(); + } +} \ No newline at end of file diff --git "a/\351\231\210\347\200\232\346\230\261/20260103-mvc\346\216\247\345\210\266\345\231\250\347\232\204\350\267\257\347\224\261.md" "b/\351\231\210\347\200\232\346\230\261/20260103-mvc\346\216\247\345\210\266\345\231\250\347\232\204\350\267\257\347\224\261.md" new file mode 100644 index 0000000000000000000000000000000000000000..950a6d1d17245c9c5437e8b79df3933119e706d7 --- /dev/null +++ "b/\351\231\210\347\200\232\346\230\261/20260103-mvc\346\216\247\345\210\266\345\231\250\347\232\204\350\267\257\347\224\261.md" @@ -0,0 +1,8 @@ +- 如何弄一个路由(在 Program.cs 中配置): +app.MapControllerRoute( + name: "default", + pattern: "{controller=Home}/{action=Index}/{id?}"); + 路由器模版解释: + {controller}:控制器名(去掉Controller后缀) + {action}:动作方法名 + {id?}:可选参数,? 表示可选 \ No newline at end of file diff --git "a/\351\231\210\347\200\232\346\230\261/20260105-mvc.md" "b/\351\231\210\347\200\232\346\230\261/20260105-mvc.md" new file mode 100644 index 0000000000000000000000000000000000000000..a2ddca2a12e3b9f5f103155f43b3a30fe1a20787 --- /dev/null +++ "b/\351\231\210\347\200\232\346\230\261/20260105-mvc.md" @@ -0,0 +1,9 @@ +- 部分视图和视图组件有什么区别? 区别: +部分视图:只包含HTML片段,没有业务逻辑 +视图组件:包含HTML和业务逻辑,更独立 +- 用户通过View交互 +Controller接收请求 +Controller调用Model处理业务 +Model更新数据并返回结果 +Controller将结果传递给View +View更新界面展示 \ No newline at end of file diff --git "a/\351\231\210\347\200\232\346\230\261/20260107-mvc\346\216\247\345\210\266\345\231\250\345\212\240\346\267\261\347\220\206\350\247\243.md" "b/\351\231\210\347\200\232\346\230\261/20260107-mvc\346\216\247\345\210\266\345\231\250\345\212\240\346\267\261\347\220\206\350\247\243.md" new file mode 100644 index 0000000000000000000000000000000000000000..903edbbbd34a0e2da7ba8aebd91af19a8af6dd36 --- /dev/null +++ "b/\351\231\210\347\200\232\346\230\261/20260107-mvc\346\216\247\345\210\266\345\231\250\345\212\240\346\267\261\347\220\206\350\247\243.md" @@ -0,0 +1,2 @@ +- 请求处理:接收并验证用户输入 业务协调:调用模型执行业务逻辑 数据传递:将处理结果传递给视图 流程控制:决定下一步显示哪个视图 用户请求 → 路由解析 → 控制器方法 → 调用模型 → 返回结果 → 渲染视图 +- 典型工作流: 用户请求 → 路由解析 → 控制器方法 → 调用模型 → 返回结果 → 渲染视图 \ No newline at end of file diff --git "a/\351\231\210\347\200\232\346\230\261/20260108-mvc\350\247\206\345\233\276.md" "b/\351\231\210\347\200\232\346\230\261/20260108-mvc\350\247\206\345\233\276.md" new file mode 100644 index 0000000000000000000000000000000000000000..48ed09ba8c34248ec91b4a0af5bb187f503cae88 --- /dev/null +++ "b/\351\231\210\347\200\232\346\230\261/20260108-mvc\350\247\206\345\233\276.md" @@ -0,0 +1,11 @@ +- 新建mvc应用 +dotnet new mvc -n 名称(在C#应用内,几乎所有标识符都用首字母大写); +搞定控制器 +在Controllers目录下,新建文件,命名通常为:XXXController.cs +控制器本质上一个类型 +定义一个类型,通常需要写好命名空间(注意取值) +然后使用public class XXXcontroller +需要使用原来定义的控制器功能,需要继承Controller类型(Controller类型的命名空间位于:Microsoft.AspNetCore.Mvc) +控制器中新建一个普通方法 +放回类型制定为IActionResult +方法内部的最后返回视图:return View(); \ No newline at end of file diff --git "a/\351\231\210\347\200\232\346\230\261/20260109-mvc\346\250\241\345\236\213.md" "b/\351\231\210\347\200\232\346\230\261/20260109-mvc\346\250\241\345\236\213.md" new file mode 100644 index 0000000000000000000000000000000000000000..621f619d0647012cb0b9f6dfb8b7ef3411491fcb --- /dev/null +++ "b/\351\231\210\347\200\232\346\230\261/20260109-mvc\346\250\241\345\236\213.md" @@ -0,0 +1,13 @@ +- mvc示例代码,用于辅助了解: +``` +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); + } +} +``` \ No newline at end of file