From 312dcb2841a8ae0e2bfdb3e9a79e1a6b15c87811 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=86=E6=BB=A2=E9=92=B0?= <14091774+well-yes@user.noreply.gitee.com> Date: Sat, 30 Nov 2024 22:52:22 +0800 Subject: [PATCH] =?UTF-8?q?=E6=81=A9=E6=81=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../20241125.md" | 9 ++ .../20241127.md" | 53 +++++++ .../20241128.md" | 137 ++++++++++++++++++ 3 files changed, 199 insertions(+) create mode 100644 "\351\231\206\346\273\242\351\222\260/20241125.md" create mode 100644 "\351\231\206\346\273\242\351\222\260/20241127.md" create mode 100644 "\351\231\206\346\273\242\351\222\260/20241128.md" diff --git "a/\351\231\206\346\273\242\351\222\260/20241125.md" "b/\351\231\206\346\273\242\351\222\260/20241125.md" new file mode 100644 index 0000000..feac8d8 --- /dev/null +++ "b/\351\231\206\346\273\242\351\222\260/20241125.md" @@ -0,0 +1,9 @@ +## action的返回值 + +1. 基础数据类型,如int,string,list<>等 +2. IActionResult,返回响应的状态码 +- 视图 +- 重定向 +3. ActiionResult是前面2个的结合体,意思为既可以返回基础数据类型,也可以返回响应状态 +4. 内容响应:JonResult.ContenResult +5. POCO(比较老的类型对象) \ No newline at end of file diff --git "a/\351\231\206\346\273\242\351\222\260/20241127.md" "b/\351\231\206\346\273\242\351\222\260/20241127.md" new file mode 100644 index 0000000..bfa5c48 --- /dev/null +++ "b/\351\231\206\346\273\242\351\222\260/20241127.md" @@ -0,0 +1,53 @@ +# MVC项目中数据渲染到视图的知识点 + +## 1. 模型(Model) +- **定义数据结构**:创建类来表示应用程序的数据。 +- **业务逻辑**:包含数据验证、计算等逻辑。 +- **数据访问**:与数据库交互,进行CRUD操作。 + +## 2. 视图(View) +- **用户界面**:展示模型数据给用户。 +- **Razor语法**:在ASP.NET MVC中,使用Razor语法来动态生成HTML。 +- **HTML模板**:使用HTML和CSS来设计页面布局和样式。 +- **数据绑定**:通过模型绑定将数据从控制器传递到视图。 + +## 3. 控制器(Controller) +- **处理请求**:接收用户的输入和请求。 +- **业务逻辑**:调用模型中的方法来处理业务逻辑。 +- **选择视图**:根据业务逻辑的结果选择相应的视图。 +- **传递数据**:将模型数据传递给视图。 + +## 4. 数据传递 +- **视图模型**:创建视图模型类,用于封装视图所需的数据。 +- **强类型视图**:在控制器中指定视图模型类型,确保类型安全。 +- **视图数据**:使用`ViewBag`或`ViewData`传递简单的数据。 +- **模型状态**:使用`ModelState`进行数据验证。 + +## 5. 视图渲染 +- **Razor视图引擎**:解析Razor语法,将模型数据渲染到HTML。 +- **布局页面**:使用`_Layout.cshtml`定义公共布局。 +- **分部视图**:使用`_PartialView.cshtml`重用视图组件。 +- **视图组件**:创建可重用的UI组件。 + +## 6. 路由配置 +- **路由表**:定义URL模式与控制器动作的映射。 +- **路由参数**:从URL中提取参数传递给控制器。 + +## 7. 错误处理 +- **错误视图**:定义错误页面,如404或500错误。 +- **异常过滤器**:全局异常处理,统一错误响应。 + +## 8. 性能优化 +- **视图缓存**:缓存视图输出,减少渲染时间。 +- **数据缓存**:缓存模型数据,减少数据库访问。 +- **异步操作**:使用异步控制器提高响应速度。 + +## 9. 安全性 +- **认证和授权**:确保只有授权用户可以访问特定视图。 +- **防跨站脚本攻击(XSS)**:对用户输入进行编码。 +- **防跨站请求伪造(CSRF)**:使用令牌保护表单提交。 + +## 10. 测试 +- **单元测试**:测试模型和控制器逻辑。 +- **集成测试**:测试整个请求处理流程。 +- **UI测试**:使用自动化工具测试用户界面。 \ No newline at end of file diff --git "a/\351\231\206\346\273\242\351\222\260/20241128.md" "b/\351\231\206\346\273\242\351\222\260/20241128.md" new file mode 100644 index 0000000..8340431 --- /dev/null +++ "b/\351\231\206\346\273\242\351\222\260/20241128.md" @@ -0,0 +1,137 @@ +## 笔记 +今天讲练习了,没笔记 + +## 效果图 + +![20241130223802](http://sjli7ulh3.hn-bkt.clouddn.com/20241130223802.png) +![20241130224205](http://sjli7ulh3.hn-bkt.clouddn.com/20241130224205.png) + + +## 主要代码 +```csharp +using Microsoft.AspNetCore.Mvc; +using Blog.Models; + +namespace Blog.Controllers; + +public class SecondController : Controller +{ + public IActionResult Yi() + { + var a=new Random(); + var b=a.Next(0,101); + return Content(b.ToString()); + } + + public IActionResult Er() + { + var a=new Random(); + var b=a.Next(1,101); + return Content(b.ToString()); + } + + public IActionResult San() + { + Random a= new Random(); + int[] arr= new int[10]; + for (int i = 0; i < arr.Length; i++) + { + arr[i]=a.Next(5,81); + } + return View(arr); + } + + public IActionResult Liu() + { + string surnames = "赵钱孙李周吴郑王冯陈褚卫蒋沈韩杨朱秦尤许何吕施张孔曹严华金魏陶姜戚谢邹喻柏水窦章云苏潘葛奚范彭郎鲁韦昌马苗凤花方俞任袁柳酆鲍史唐费廉岑薛雷贺倪汤滕殷罗毕郝邬安常乐于时傅皮卞齐康伍余元卜顾孟平黄穆萧尹姚"; + // 定义中文字符字符串 + string chineseCharacters = "一二三四五六七八九十abcdefghijklmnopqrstuvwxyz"; + + // 创建Random对象 + Random random = new Random(); + + // 从百家姓中随机选择一个姓 + int surnameIndex = random.Next(surnames.Length); + string surname = surnames[surnameIndex].ToString(); + + // 从中文字符中随机选择1到2个字符 + int characterCount = random.Next(1, 3); // 随机选择1到2个字符 + string name = ""; + for (int i = 0; i < characterCount; i++) + { + int charIndex = random.Next(chineseCharacters.Length); + name += chineseCharacters[charIndex]; + } + + // 将姓和名组合成完整的姓名 + string fullName = surname + name; + + // 输出生成的姓名 + return Content(fullName); + } + + public ActionResult Index() + { + List tableData = new List + { + new TableItem { ID = 1, Title = "333339", Content = "9999" }, + new TableItem { ID = 2, Title = "333339", Content = "9999" }, + new TableItem { ID = 3, Title = "333339", Content = "9999" }, + new TableItem { ID = 4, Title = "333339", Content = "9999" } + }; + + return View(tableData); + } +} +``` + +```csharp +namespace Blog.Models; + +public class TableItem +{ + public int ID { get; set; } + public string Title { get; set; } + public string Content { get; set; } +} +``` + +```html + + + + + + + + + + + @foreach (var item in Model) + { + + + + + + + } + +
ID标题内容作者
@item.ID@item.Title@item.Content + 编辑 | + 删除 +
+``` + +```html +@model int[] + +
    +@foreach (var a in Model) +{ +
  • @a
  • +} +
+ +

呵呵写了两节课

+``` \ No newline at end of file -- Gitee