diff --git "a/\351\231\210\346\230\237\346\234\210/20241119-\346\216\247\345\210\266\345\231\250.md" "b/\351\231\210\346\230\237\346\234\210/20241119-\346\216\247\345\210\266\345\231\250.md" new file mode 100644 index 0000000000000000000000000000000000000000..d85da12cbc8be2981065a1388474313ddd480532 --- /dev/null +++ "b/\351\231\210\346\230\237\346\234\210/20241119-\346\216\247\345\210\266\345\231\250.md" @@ -0,0 +1,129 @@ +# 笔记 +## 控制器 ++ 名字:控制器名+Controller.cs 文件内的基本组成: + + using Microsoft.AspNetCore.Mvc + namespace MVC项目名.Controlers; + public class 类名 : Controller + { + public 返回值 方法名(参数){ + return 值; + } + } +# 作业 +## 1、任务:尝试使用以下几种方式分别登录服务器,说明它们分别的注意事项,并说明它们之间的区别 +1. ssh客户端 ++ 注意事项:需要知道服务器的ip地址、用户名和密码(或秘钥)。确保本地安装了SSH客户端,如OpenSSH。 ++ 命令:ssh username@hostname ++ 优点:广泛支持,安全性高。 +2. tabby应用 ++ 注意事项:Tabby 是一个跨平台的终端应用,支持 SSH 和其他协议。需要配置连接信息。 ++ 优点:界面友好,支持多种协议,配置方便。 +3. xShell ++ 注意事项:xShell 是一款功能强大的终端模拟器,支持 SSH、SFTP 等协议。需要安装并配置连接信息。 ++ 优点:功能丰富,支持多标签页,适合长时间使用。 +4. putty ++ 注意事项:PuTTY 是一个免费的、开源的 SSH 和 telnet 客户端,适用于 Windows。需要配置连接信息。 ++ 优点:轻量级,简单易用。 +5. 区别: ++ SSH 客户端是命令行工具,适合熟悉命令行操作的用户。 ++ Tabby 和 xShell 是图形化界面工具,适合需要多标签页和图形化配置的用户。 ++ PuTTY 是 Windows 上的轻量级 SSH 客户端,适合简单连接需求。 +## 2、任务:更新软件源,命令:apt update,并了解这一步的实际用处和意义 ++ 更新软件源:apt update ++ 实际用处:获取最新的软件包列表信息,确保安装或更新软件包时使用的是最新版本。 +## 3、任务:更新软件和补丁,命令:apt upgrade -y,并了解这一步的实际用处意义 ++ 更新软件和补丁:apt upgrade -y ++ 实际用处:根据最新的软件包列表信息,更新已安装的软件包和补丁,确保系统安全。 +## 4、熟悉并完成以下练习 + + 1.查看当前目录下的文件和文件夹 + 命令:ls + + 2.查看当前路径 + + 命令:pwd + + 3.创建一个新的文件夹 + + 命令:mkdir [文件夹名] + + 4.删除一个文件夹 + + 命令:rmdir [文件夹名](注意:只能删除空文件夹) + + 5.移动或重命名文件/文件夹 + + 命令:mv [原路径] [新路径] + + 6.复制文件 + + 命令:cp [源文件] [目标路径] + + 7.删除文件 + + 命令:rm [文件名] + + 8.查看文件内容 + + 命令:cat [文件名] + + 9.分页查看文件内容 + + 命令:less [文件名] + + 10.查找文件 + + 命令:find / -name [文件名] + + 11.查看文件权限 + + 命令:ls -l [文件或目录名] + + 12.改变文件权限 + + 命令:chmod [权限] [文件或目录名] + + 13.改变文件所有者 + + 命令:chown [新所有者] [文件或目录名] + + 14.查看当前登录用户 + + 命令:whoami + + 15.查看系统运行时间和平均负载 + + 命令:uptime + + 16.查看磁盘使用情况 + + 命令:df -h + + 17.查看当前路径下的隐藏文件 + + 命令:ls -a + + 18.创建一个空文件 + + 命令:touch [文件名] + + 19.查看当前系统的内核版本 + + 命令:uname -r + + 20.查看网络连接状态 + + 命令:ifconfig 或 ip addr + + 21.安装一个软件包 + + 命令:sudo apt-get install [软件包名] + + 22.卸载一个软件包 + + 命令:sudo apt-get remove [软件包名] + + 23.更新软件包列表 + + 命令:sudo apt-get update \ No newline at end of file diff --git "a/\351\231\210\346\230\237\346\234\210/20241121-\346\216\247\345\210\266\345\231\250\345\217\202\346\225\260\344\273\245\345\217\212\350\247\206\345\233\276.md" "b/\351\231\210\346\230\237\346\234\210/20241121-\346\216\247\345\210\266\345\231\250\345\217\202\346\225\260\344\273\245\345\217\212\350\247\206\345\233\276.md" new file mode 100644 index 0000000000000000000000000000000000000000..9cffa47e92a83dde9212d0c6f218ded619a240bf --- /dev/null +++ "b/\351\231\210\346\230\237\346\234\210/20241121-\346\216\247\345\210\266\345\231\250\345\217\202\346\225\260\344\273\245\345\217\212\350\247\206\345\233\276.md" @@ -0,0 +1,7 @@ +# 笔记 +## 控制器的参数 + 方式1--地址传参 + url/值 接收一般为id,可以在路由更改。 + + 方式2--[FromBody]传参 + 定义一个类接收 类名CreateDto 定义属性 访问前提: 类前面加请求方式[HttpPost] 参数前面加[FromBody] \ No newline at end of file diff --git "a/\351\231\210\346\230\237\346\234\210/20241122-\346\216\247\345\210\266\345\231\250\345\217\202\346\225\260\345\222\214\350\277\224\345\233\236\345\200\274\344\273\245\345\217\212\350\247\206\345\233\276.md" "b/\351\231\210\346\230\237\346\234\210/20241122-\346\216\247\345\210\266\345\231\250\345\217\202\346\225\260\345\222\214\350\277\224\345\233\236\345\200\274\344\273\245\345\217\212\350\247\206\345\233\276.md" new file mode 100644 index 0000000000000000000000000000000000000000..aa299860e254f0915f837e5132d674951d2628d0 --- /dev/null +++ "b/\351\231\210\346\230\237\346\234\210/20241122-\346\216\247\345\210\266\345\231\250\345\217\202\346\225\260\345\222\214\350\277\224\345\233\236\345\200\274\344\273\245\345\217\212\350\247\206\345\233\276.md" @@ -0,0 +1,156 @@ +# 笔记 +## 控制器返回值 +1. 一般数据类型 +2. IActionResult类型(接口) +3. ActionResult类型(接口加一般数据类型) +4. 特定于格式的操作结果 +5. Poco(普通旧CLR对象) +## 视图 +控制器返回值通过 @model 数据类型 ----》接收数据 + +# 作业 +## MVC练习 +1. 创建一个控制台项目,没有任何选项,体会项目名称和什么有关系 ++ dotnet new console +![](https://gitee.com/chen-xingyueyue/picture-bed/raw/master/imgs/20241124212623.png) + +2. 创建一个控制项目,项目名称Blog ++ dotnet new console -n Blog +![](https://gitee.com/chen-xingyueyue/picture-bed/raw/master/imgs/20241124212647.png) + +3. 创建一个控制台项目,输出到Blog目录 ++ dotnet new console -o Blog +![](https://gitee.com/chen-xingyueyue/picture-bed/raw/master/imgs/20241124212722.png) + +4. 创建一个MVC项目,指定项目名称 ++ dotnet new mvc -n Blog +![](https://gitee.com/chen-xingyueyue/picture-bed/raw/master/imgs/20241124212819.png) + +5. 创建一个MVC项目,指定输出目录 ++ dotnet new mvc -o BlogDir +![](https://gitee.com/chen-xingyueyue/picture-bed/raw/master/imgs/20241124212847.png) + +6. 创建一个带解决方案,其下有一个MVC项目,3个类库项目的“综合项目” ++ dotnet new sln -n Solution ++ MVC项目: dotnet new mvc -n Blog +```css +类库: +dotnet new classlib -n ClassLib1 +dotnet new classlib -n ClassLib2 +dotnet new classlib -n ClassLib3 +``` +![](https://gitee.com/chen-xingyueyue/picture-bed/raw/master/imgs/20241124212935.png) + +7. 创建一个项目,在默认控制器(Home)下,新增一个Action方法,名为Ok,同时为其创建对应视图以显示这个视图 +```csss +创建项目 dotnet new mvc -n Blog + + public IActionResult Ok() + { + return View(); + } +``` +![](https://gitee.com/chen-xingyueyue/picture-bed/raw/master/imgs/20241124213159.png) +8. 创建一个项目,创建一个新的控制器,名为Blogs,新的控制器拥有一个名为Index的Action,该方法返回一个视图,视图显示“神级预判” +```css +public class BlogsController : Controller +{ + public IActionResult Index() + { + return View(); + } +} +``` +9. 给第8题的新控制,添加一个新的Action,名为Music,不接受任何参数,并返回对应的视图,视图显示“顶级打野” +```css + public IActionResult Music() + { + return View(); + } +``` +10. 给第8题的新控制器,新增一个Action,名为List,不接受任何参数,并返回对应视图,视图显示一个经典CRUD界面 +```css + public IActionResult List() + { + return View(); + } +``` +11. 新增一个控制器,名为Products,该控制器具有一个名为Edit的Action,这个Action接受一个int类型的参数id,显示这个id +```css + public class ProductsController : Controller + { + public IActionResult Edit(int id) + { + ViewBag.Id = id; + return View(); + } + } +``` +12. 在11题的新控制器中,新增一个名为Create的Action,该Action接受一个类型为Students(有姓名、年龄、体长属性)的参数,并展示该参数的姓名属性 +```css +public class ProductsController : Controller{ + public IActionResult Create(){ + var pro=new ProductStudent{ + Name="小怡", + Age="19", + Tall="185" + }; + return View(pro); +} + } + public class ProductStudent{ + public string Name{get;set;}=null!; + public string Age{get;set;}=null!; + public string Tall{get;set;}=null!; + + } +``` +## 专项练习-控制器传参 +1. 简单参数传递 在一个叫Blog控制器中,定义一个叫Index的Action,并且传递一个int类型的值,id为变量名 +![](https://gitee.com/chen-xingyueyue/picture-bed/raw/master/imgs/20241124203207.png) + +2. 简单参数传递 在一个叫Blog控制器中,定义一个叫Index_2的Action,并且传递一个string类型的值,id为变量名 +![](https://gitee.com/chen-xingyueyue/picture-bed/raw/master/imgs/20241124203308.png) + +3. 简单参数传递 在一个叫Blog控制器中,定义一个叫Index_3的Action,并且传递一个string类型的值,name为变量名 +![](https://gitee.com/chen-xingyueyue/picture-bed/raw/master/imgs/20241124203340.png) + +4. 复杂参数传递 在一个叫Blog的控制器中,定义一个名为Create的Action,并且传递一个BlogCreateDto类型的值,blogCreateDto为变量名 ++ PS BlogCreateDto类型具有Title、Author、Content自动属性 +![](https://gitee.com/chen-xingyueyue/picture-bed/raw/master/imgs/20241124203647.png) + +5. 复杂参数传递 在一个叫Blog的控制器中,定义一个名为Create_1的Action,并且传递一个Products类型的值,productCreateDto为变量名 ++ PS Products类型具有Name、Price、Stock自动属性 +![](https://gitee.com/chen-xingyueyue/picture-bed/raw/master/imgs/20241124203801.png) + +6. 复杂参数传递 在一个叫Blog的控制器中,定义一个名为Create_2的Action,并且传递一个Students类型的值,studentCreateDto为变量名 ++ PS Students类型具有StudentName、Sex、Age自动属性 +![](https://gitee.com/chen-xingyueyue/picture-bed/raw/master/imgs/20241124203852.png) +## 专项练习-基础能力 +1. 生成一个随机整数,范围[0,100],注意是否包含 +![](https://gitee.com/chen-xingyueyue/picture-bed/raw/master/imgs/20241124204121.png) + +2. 生成一个随机整数,范围(0,100],注意是否包含 +![](https://gitee.com/chen-xingyueyue/picture-bed/raw/master/imgs/20241124204221.png) + +3. 生成10个随机整数,范围[5,80],注意是否包含 +![](https://gitee.com/chen-xingyueyue/picture-bed/raw/master/imgs/20241124204257.png) + +4. 定义一个字符串,字符串中有100个中文字符,需要从中随机取1个字符串 +![](https://gitee.com/chen-xingyueyue/picture-bed/raw/master/imgs/20241124204648.png) + +5. 定义一个字符串,字符串中有100个中文字符,需要从中随机取5-50个字符,组成新的字符 +![](https://gitee.com/chen-xingyueyue/picture-bed/raw/master/imgs/20241124204858.png) + +6. 定义2个字符串,第一个字符串中放百家姓,第二个字符串中放中文字符,要求从第一个字符串随机取得一个姓,再从第二个字符串中随机获得1到2个字符组成新字符串,和第一个字符串取得的姓组成一个姓名 +![](https://gitee.com/chen-xingyueyue/picture-bed/raw/master/imgs/20241124210012.png) + +7. 利用以上方法,随机生成100个BlogCreateDto类型(有Title、Author、Content属性)的对象,其中的内容都是随机生成且长度不定,并将其渲染到视图 +![](https://gitee.com/chen-xingyueyue/picture-bed/raw/master/imgs/20241124210124.png) +## 专项练习-控制器返回值 +1. 渲染简单数据到页面 +![](https://gitee.com/chen-xingyueyue/picture-bed/raw/master/imgs/dfsffb.png) +2. 渲染复杂数据到页面 +![](https://gitee.com/chen-xingyueyue/picture-bed/raw/master/imgs/20241124141050.png) +3. 渲染集合数据到页面 +![](https://gitee.com/chen-xingyueyue/picture-bed/raw/master/imgs/20241124141050.png) \ No newline at end of file