From 193f0004d905eda83c5d1bf2fbbb6ff9bd053775 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B4=E4=BD=B3=E9=A2=96?= <3572749703@qq.com> Date: Sun, 1 Dec 2024 21:06:55 +0800 Subject: [PATCH] 11.29 --- ...40\345\217\202\347\261\273\345\236\213.md" | 285 ++++++++++++++++++ ...66\345\231\250\344\274\240\345\217\202.md" | 0 ...62\346\237\223\350\247\206\345\233\276.md" | 41 +++ .../2024.11.29\346\223\215\344\275\234.md" | 77 +++++ 4 files changed, 403 insertions(+) create mode 100644 "\345\220\264\344\275\263\351\242\226/2024.11.25Action\344\274\240\345\217\202\347\261\273\345\236\213.md" delete mode 100644 "\345\220\264\344\275\263\351\242\226/2024.11.25\346\216\247\345\210\266\345\231\250\344\274\240\345\217\202.md" create mode 100644 "\345\220\264\344\275\263\351\242\226/2024.11.27\346\270\262\346\237\223\350\247\206\345\233\276.md" create mode 100644 "\345\220\264\344\275\263\351\242\226/2024.11.29\346\223\215\344\275\234.md" diff --git "a/\345\220\264\344\275\263\351\242\226/2024.11.25Action\344\274\240\345\217\202\347\261\273\345\236\213.md" "b/\345\220\264\344\275\263\351\242\226/2024.11.25Action\344\274\240\345\217\202\347\261\273\345\236\213.md" new file mode 100644 index 0000000..d601a22 --- /dev/null +++ "b/\345\220\264\344\275\263\351\242\226/2024.11.25Action\344\274\240\345\217\202\347\261\273\345\236\213.md" @@ -0,0 +1,285 @@ +@startmindmap +1. HTTP请求 + * get + * post + * put + * delete +2. MVC模式中Action返回值类型 + * 返回常见数据类型:int、string、IList<> + * IActionResult-->(接口),返回响应状态码:200(请求成功,响应正常)、301(重定向)、401、404(资源找不到)、500(服务器错误)等 + - 视图 + - 重定向 + * ActionResult<>-->(类型),可以同时返回状态码或常规数据类型 + * JsonResult,contentResult,返回响应是纯粹的数据 + * PoCo,可以返回一个对象,而这个对象在被返回的时候,会被序列化(相对应的是,反序列化)-->Json{"name":"xxx"} + - 信息-->(序列化)网络-->(反序列化)信息 + - 网络 + - 网线 + - 光纤 + - 网络设备 +@endmindmap + +# 指定视图 +```js +public IActionResult Delete() +{ + return View("Test"); //Test是Views里的Test.cshtml +} +``` +# 重定向(跳转) +```js +public IActionResult Delete() +{ + return RedirectToAction("Index"); //Index.cshtml +} +``` +# dynamic +```js + public dynamic Edit() + { + return new {Id=18}; + } +//返回页面Json显示{"Id":18} +``` +# 定义类型传有参 +```js +//定义类型 + public class BlogCreateDto + { + public string Title{get;set;}=null!; + public string Author{get;set;}=null!; + public string Content{get;set;}=null!; + } +//传值 + public BlogCreateDto Index( int id) + { + var blogCreateDto=new BlogCreateDto + { + Author="小红", + Title="果敢", + Content="人生不就是白干加白干" + }; + return blogCreateDto; + } +//发送请求 + [HttpPost] + public IActionResult Create([FromBody] BlogCreateDto blogCreateDto) + { + return View(blogCreateDto); + } +``` +# ActionResult<>类型传字符串 +```js +public ActionResult Edit(){ + var isOk=1==3?true:false; + if(isOk){ + return View(); + } + else{ + return "156sfsdgfd"; + } +} +``` +# ActionResult<>类型传集合 +```js +public ActionResult > Edit(){ + var isOk=1==3?true:false; + if(isOk){ + return View(); + } + else{ + var list =new List{ + "鸡蛋", + "巧克力", + "草莓酱" + } + return list; + } +} +``` + +# 专项练习-控制器传参 +```cs + // 简单参数传递 在一个叫Blog控制器中,定义一个叫Index的Action, + // 并且传递一个int类型的值,id为变量名 + public IActionResult index(int id){ + return Content(id.ToString()); + } + // 简单参数传递 在一个叫Blog控制器中, + // 定义一个叫Index_2的Action,并且传递一个string类型的值,id为变量名 + public IActionResult index_2(string id){ + return Content(id); + } + // 简单参数传递 在一个叫Blog控制器中, + // 定义一个叫Index_3的Action,并且传递一个string类型的值,name为变量名 + public IActionResult index_3(string name){ + return Content(name); + } + // 复杂参数传递 在一个叫Blog的控制器中,定义一个名为Create的Action, + // 并且传递一个BlogCreateDto类型的值,blogCreateDto为变量名 + [HttpPost] + public IActionResult Create([Frombody] BlogCreateDto blogCreateDto){ + return Content(JsonSerializer.Serialize(blogCreateDto)); + } + // 复杂参数传递 在一个叫Blog的控制器中,定义一个名为Create_1的Action, + // 并且传递一个Products类型的值,productCreateDto为变量名 + [HttpPost] + public IActionResult Create_1([Frombody] Products productsCreateDto){ + return Content(JsonSerializer.Serialize(productsCreateDto)); + } + // 复杂参数传递 在一个叫Blog的控制器中,定义一个名为Create_2的Action, + // 并且传递一个Students类型的值,studentCreateDto为变量名 + [HttpPost] + public IActionResult Create_2([Frombody] Students studentsCreateDto){ + return Content(JsonSerializer.Serialize(studentsCreateDto)); + } +``` +# 专项练习-基础能力 +```cs + // 生成一个随机整数,范围[0,100],注意是否包含 + public string Index(){ + var rand=new Random(); + var rannum=rand.Next(0,101); + return rannum.ToString(); + } + // 生成一个随机整数,范围(0,100],注意是否包含 + public string num_2(){ + var rand=new Random(); + var rannum=rand.Next(1,101); + return rannum.ToString(); + } + // 生成10个随机整数,范围[5,80],注意是否包含 + public string num_3(){ + var rand=new Random(); + var rannum=rand.Next(5,81); + return rannum.ToString(); + } + // 定义一个字符串,字符串中有100个中文字符,需要从中随机取1个字符串 + public string num_str(){ + var str="天然今年和探讨如何艾天然今年和探讨如何艾天然今年和探讨如何艾天然今年和探讨如何艾天然今年和探讨如何艾天然今年和探讨如何艾天然今年和探讨如何艾天然今年和探讨如何艾天然今年和探讨如何艾天然今年和探讨如何艾"; + var rand=new Random(); + var rannum=rand.Next(0,str.Length); + var ranStr=str[rannum]; + return ranStr.ToString(); + } + // 定义一个字符串,字符串中有100个中文字符,需要从中随机取5-50个字符,组成新的字符 + public string num_strs(){ + var str="天然今年和探讨如何艾天然今年和探讨如何艾天然今年和探讨如何艾天然今年和探讨如何艾天然今年和探讨如何艾天然今年和探讨如何艾天然今年和探讨如何艾天然今年和探讨如何艾天然今年和探讨如何艾天然今年和探讨如何艾"; + var rand=new Random(); + var rannum=rand.Next(5,51); + var ranStr=""; + for (int i = 0; i < rannum; i++) + { + var num=rand.Next(0,str.Length); + ranStr+=str[num]; + } + return ranStr; + } + // 定义2个字符串,第一个字符串中放百家姓,第二个字符串中放中文字符,要求从第一个字符串随机取得一个姓, + // 再从第二个字符串中随机获得1到2个字符组成新字符串,和第一个字符串取得的姓组成一个姓名 + public string num_name(){ + var str="天然今年和探讨如何艾天然今年和探讨如何艾天然今年和探讨如何艾天然今年和探讨如何艾天然今年和探讨如何艾天然今年和探讨如何艾天然今年和探讨如何艾天然今年和探讨如何艾天然今年和探讨如何艾天然今年和探讨如何艾"; + var rand=new Random(); + var rannum=rand.Next(0,str.Length); + var ming="否都开始否额我是陈好吗了你好好个是"; + var n=rand.Next(1,3); + var ranStr=""; + for(int i=0;i + { + "小明", + "小花", + "小兰", + "小娟" + }; + return list; + } +``` +# 专项练习-视图及其模板引擎 +```cs + // 渲染(展示)简单数据类型到视图 + public string Index(){ + return "我是简单数据类型"; + } + // 渲染(展示)对象数据到试图 + public IActionResult Index_2(){ + var list =new BlogCreateDto{ + Title="今天星期几", + Author="李四", + Content="呵呵哒" + }; + return View(list); + } + // 渲染(展示)集合数据到视图 + public IActionResult Index_3(){ + var list =new List + { + new BlogCreateDto + { + Title="今天星期几", + Author="李四", + Content="呵呵哒", + }, + new BlogCreateDto + { + Title="今天星期几", + Author="李四", + Content="呵呵哒", + }, + new BlogCreateDto + { + Title="今天星期几", + Author="李四", + Content="呵呵哒", + } + }; + return View(list); + } + public IActionResult Index_4() + { + var blog = new Blogs + { + Title="今天星期几", + Author="李四", + Content="呵呵哒", + BlogCreateDto = new List + { + new BlogCreateDto + { + Title="今天星期几", + Author="李四", + Content="呵呵哒", + }, + new BlogCreateDto + { + Title="今天星期几", + Author="李四", + Content="呵呵哒", + }, + } + }; + return View(blog); + } +``` diff --git "a/\345\220\264\344\275\263\351\242\226/2024.11.25\346\216\247\345\210\266\345\231\250\344\274\240\345\217\202.md" "b/\345\220\264\344\275\263\351\242\226/2024.11.25\346\216\247\345\210\266\345\231\250\344\274\240\345\217\202.md" deleted file mode 100644 index e69de29..0000000 diff --git "a/\345\220\264\344\275\263\351\242\226/2024.11.27\346\270\262\346\237\223\350\247\206\345\233\276.md" "b/\345\220\264\344\275\263\351\242\226/2024.11.27\346\270\262\346\237\223\350\247\206\345\233\276.md" new file mode 100644 index 0000000..d147d82 --- /dev/null +++ "b/\345\220\264\344\275\263\351\242\226/2024.11.27\346\270\262\346\237\223\350\247\206\345\233\276.md" @@ -0,0 +1,41 @@ +# 渲染 +- 简单数据在视图的渲染和展示 +- 复杂数据在视图的渲染和展示 +- 集合数据在视图的渲染和展示 + +## Razor +Razor 支持 C#,并使用` @ `符号从 HTML 转换为 C#。 Razor 计算 C# 表达式,并将它们呈现在 HTML 输出中。 + +当 @ 符号后跟 Razor 保留关键字时,它会转换为 Razor 特定标记. + +### 隐式 Razor 表达式 +以 @ 开头,后跟 C# 代码。隐式表达式不能包含空格,但 C# **await** 关键字除外。不能包含 C# 泛型,因为括号 (<>) 内的字符会被解释为 HTML 标记。 + +### 显式 Razor 表达式 +由 @ 符号和平衡圆括号组成。 + +### Razor 代码块 +代码块以 @ 开始,并括在 {} 中,例如: +```CSHTML +@{ + var quote = "The future depends on what you do today. - Mahatma Gandhi"; +} +

@quote

+@{ + quote = "Hate cannot drive out hate, only love can do that. - Martin Luther King, Jr."; +} +

@quote

+``` +该代码呈现以下 HTML: +```HTML +

The future depends on what you do today. - Mahatma Gandhi

+

Hate cannot drive out hate, only love can do that. - Martin Luther King,Jr.";

+``` + +## 内置ASP.NET Core标记帮助程序--定位点 +定位点标记帮助程序可通过添加新属性来增强标准的 HTML 定位点 () 标记。 按照约定,属性名称将使用前缀 asp-。 asp- 属性的值决定呈现的定位点元素的 href 属性值 + +属性: +1. `asp-controller`:可分配用于生成 URL 的控制器。 +2. `asp-action `:属性值表示生成的 href 属性中包含的控制器操作名称。 +3. `asp-all-route-data` :支持创建键值对字典。 键是参数名称,值是参数值。 \ No newline at end of file diff --git "a/\345\220\264\344\275\263\351\242\226/2024.11.29\346\223\215\344\275\234.md" "b/\345\220\264\344\275\263\351\242\226/2024.11.29\346\223\215\344\275\234.md" new file mode 100644 index 0000000..62a36a6 --- /dev/null +++ "b/\345\220\264\344\275\263\351\242\226/2024.11.29\346\223\215\344\275\234.md" @@ -0,0 +1,77 @@ +# 实现 增 操作 + +### 定义一个模型Models,模拟数据库 +1. 定义一个数据库的表 +2. 静态构造函数(只执行一次,内容如果修改,则需要重新跑) + 1) 初始化静态属性 + - 直接初始化:`public static List Blog = new List{"value1","value2"...};` + - **使用静态构造函数**(下面例子中的方法,推荐使用该方法 + - 延迟初始化 + - 使用属性初始化器 + 2) 给这个集合属性,塞进去一些内容 +```cs +public static class Db +{ + public static List Blog{get;set;} + + static Db() + { + Blog = new List(); + + for (int i = 0; i < 15; i++) + { + var tmp = new Blog + { + Id = i + 1,... + }; + + Blog.Add(tmp); + } + } +} +``` + +### 创建视图,展示内容 +1. 使用``标签展现 增删改 + ```html + 新增 + ``` +2. `asp-controller`:指定表单提交的 **目标控制器** +3. `asp-action`:指定表单提交时应该调用的控制器中的 **动作(方法)** +4. `asp-route-*`:通常与以上两个属性配合使用,便在创建表单或链接时能够自动将模型的状态或路由*参数*传递给控制器的特定动作。-id就是传递相应行的id号 + ```html + 编辑 + ``` + +### 跳转至增加页面 +1. 页面显示form表单,**一定要声明Models** +```html + +@model Blogs.Models.Blog; + +
+
+
+
+ +
+``` + +### 使用post请求,添加到表单 +1. 获取表单中最大的ID数,,方便程序在添加中自行增加Id数:`Max()方法` +2. 测试添加内容是否有被获取到:`return Content(JsonSerializer.Serialize(input))` +3. 将内容添加至表单 +```cs +[HttpPost] +public IActionResult Create(Blog input) +{ + // 获取表单中最大的ID数 + var maxId = Db.Blog.Select(t => t.Id).Max(); + // 添加后ID也增加 + input.Id = maxId + 1; + // 将添加的内容加入表单 + Db.Blog.Add(input); + return RedirectToAction("Index"); + // return Content(JsonSerializer.Serialize(input)); +} +``` \ No newline at end of file -- Gitee