diff --git "a/\346\275\230\347\210\261\347\220\264/20241119-\346\216\247\345\210\266\345\231\250,Debian.md" "b/\346\275\230\347\210\261\347\220\264/20241119-Debian.md" similarity index 32% rename from "\346\275\230\347\210\261\347\220\264/20241119-\346\216\247\345\210\266\345\231\250,Debian.md" rename to "\346\275\230\347\210\261\347\220\264/20241119-Debian.md" index 5d0165e8043beff0248d979bef636db0eb5ee4be..1bc0005b1df83279e8d6ca35d73ae83952ab245e 100644 --- "a/\346\275\230\347\210\261\347\220\264/20241119-\346\216\247\345\210\266\345\231\250,Debian.md" +++ "b/\346\275\230\347\210\261\347\220\264/20241119-Debian.md" @@ -11,7 +11,93 @@ 强制让nginx加载配置文件,命令:nginx -s reload #### Linux练习 -  +1. +tabby应用 +注意事项:Tabby是一个开源的终端平台,需要在本地安装,并且配置正确的服务器信息。 区别:Tabby提供了一个用户友好的界面,支持多标签和颜色主题,使得远程连接和管理服务器更加便捷。 + +xShell +注意事项:xShell是一个Windows平台的终端仿真软件,需要在Windows系统上安装并配置。 区别:xShell提供了多标签界面,支持SSH1和SSH2协议,适合在Windows环境下使用。 + +putty +注意事项:PuTTY是一个流行的SSH和telnet客户端,仅支持Windows平台。 区别:PuTTY界面简洁,易于使用,但不支持多标签,每次只能连接一个服务器。 +#### 2.更新软件源,命令:apt update,并了解这一步的实际用处和意义 + +#### 3.任务:更新软件和补丁,命令: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 + + +``` +5. #### MVC练习 1.创建一个控制台项目 diff --git "a/\346\275\230\347\210\261\347\220\264/20241121-MVC\346\216\247\345\210\266\345\231\250.md" "b/\346\275\230\347\210\261\347\220\264/20241121-MVC\346\216\247\345\210\266\345\231\250.md" new file mode 100644 index 0000000000000000000000000000000000000000..c98d0ffab3a3fd68661b4bc4bec40c3b6533ba90 --- /dev/null +++ "b/\346\275\230\347\210\261\347\220\264/20241121-MVC\346\216\247\345\210\266\345\231\250.md" @@ -0,0 +1,142 @@ +### 通过路由传递参数: +在控制器的Action中,你可以通过在路由模板中定义参数来接收参数。 + +### 通过表单传递参数: +当使用表单提交数据时,可以通过模型绑定将表单字段绑定到Action方法的参数。 + +### 通过FromBody传递参数: +对于使用HTTP POST或PUT方法提交的JSON或XML数据,可以使用[FromBody]属性来接收数据。 + +### 通过查询字符串传递参数: +当参数通过URL的查询字符串传递时,你可以在Action方法中通过参数接收它们。 + +### 通过Header传递参数: +可以通过[FromHeader]属性来获取HTTP请求头中的参数 + +### 通过路由传递参数: +在控制器的Action中,你可以通过在路由模板中定义参数来接收参数。 + +// GET: Home/Details/5 +public IActionResult Details(int id) +{ + var item = _context.Items.FirstOrDefault(m => m.Id == id); + return View(item); +} +通过表单传递参数: +当使用表单提交数据时,可以通过模型绑定将表单字段绑定到Action方法的参数。 + +public class Item +{ + public int Id { get; set; } + public string Name { get; set; } +} + +// POST: Home/Create +[HttpPost] +public IActionResult Create(Item item) +{ + // 保存item对象到数据库 +} +通过FromBody传递参数: +对于使用HTTP POST或PUT方法提交的JSON或XML数据,可以使用[FromBody]属性来接收数据。 + +[HttpPost] +public IActionResult Create([FromBody] Item item) +{ + // 保存item对象到数据库 +} +通过查询字符串传递参数: +当参数通过URL的查询字符串传递时,你可以在Action方法中通过参数接收它们。 + +// GET: Home/Details?name=John&age=30 +public IActionResult Details(string name, int age) +{ + // 使用name和age参数 +} +通过Header传递参数: +可以通过[FromHeader]属性来获取HTTP请求头中的参数。 + +public IActionResult GetSecretData([FromHeader] string secretKey) +{ + // 根据secretKey参数执行操作 +} +专项练习-控制器传参 +1、简单参数传递 在一个叫Blog控制器中,定义一个叫Index的Action,并且传递一个int类型的值,id为变量名 + public class BlogController : Controller + { + public IActionResult Index(int id) + { + return Content(id.ToString) + } + + } +2、简单参数传递 在一个叫Blog控制器中,定义一个叫Index_2的Action,并且传递一个string类型的值,id为变量名 +public class BlogController : Controller + { + + public IActionResult Index_2(string id) + { + return Content(id) + } + + } +3、简单参数传递 在一个叫Blog控制器中,定义一个叫Index_3的Action,并且传递一个string类型的值,name为变量名 +public class BlogController : Controller + { + public IActionResult Index_3(string name) + { + return Content(name) + } + } +4、复杂参数传递 在一个叫Blog的控制器中,定义一个名为Create的Action,并且传递一个BlogCreateDto类型的值,blogCreateDto为变量名 +PS BlogCreateDto类型具有Title、Author、Content自动属性 + +public class BlogController : Controller + { + [HttpPost] + public IActionResult Create([FromBody] BlogCreateDto blogCreateDto){ + + return Content(blogCreateDto.Title) + } + + public class BlogCreateDto{ + + //BlogCreateDto类型具有Title、Author、Content自动属性 + public string Title{get;set;}=null!; + public string Author{get;set;}=null!; + public string Content{get;set;}=null!; + } + } +5、复杂参数传递 在一个叫Blog的控制器中,定义一个名为Create_1的Action,并且传递一个Products类型的值,productCreateDto为变量名 +PS Products类型具有Name、Price、Stock自动属性 + + public class BlogController : Controller + { + [HttpPost] + public IActionResult Create([FromBody] Products productCreateDto){ + return Content(blogCreateDto.Title) + } + //PS Products类型具有Name、Price、Stock自动属性 + public class Products{ + public string Name{get;set;}=null!; + public string Price{get;set;}=null!; + public string Stock{get;set;}=null!; + } + } +6、复杂参数传递 在一个叫Blog的控制器中,定义一个名为Create_2的Action,并且传递一个Students类型的值,studentCreateDto为变量名 +PS Students类型具有StudentName、Sex、Age自动属性 + + public class BlogController : Controller + { + public class BlogContriller : Controller{ + [HttpPost] + public IActionResult Create_2([FromBody] Students studentCreateDto){ + return Content(blogCreateDto.Title) + } + } + public class Students{ + public string Name{get;set;}=null!; + public string Price{get;set;}=null!; + public string Stock{get;set;}=null!; + } + } \ No newline at end of file diff --git "a/\346\275\230\347\210\261\347\220\264/20241121.md" "b/\346\275\230\347\210\261\347\220\264/20241121.md" deleted file mode 100644 index 541a537d52d1229aa96d4b55707697dc78c75023..0000000000000000000000000000000000000000 --- "a/\346\275\230\347\210\261\347\220\264/20241121.md" +++ /dev/null @@ -1,47 +0,0 @@ -通过路由传递参数: -在控制器的Action中,你可以通过在路由模板中定义参数来接收参数。 - -// GET: Home/Details/5 -public IActionResult Details(int id) -{ - var item = _context.Items.FirstOrDefault(m => m.Id == id); - return View(item); -} -通过表单传递参数: -当使用表单提交数据时,可以通过模型绑定将表单字段绑定到Action方法的参数。 - -public class Item -{ - public int Id { get; set; } - public string Name { get; set; } -} - -// POST: Home/Create -[HttpPost] -public IActionResult Create(Item item) -{ - // 保存item对象到数据库 -} -通过FromBody传递参数: -对于使用HTTP POST或PUT方法提交的JSON或XML数据,可以使用[FromBody]属性来接收数据。 - -[HttpPost] -public IActionResult Create([FromBody] Item item) -{ - // 保存item对象到数据库 -} -通过查询字符串传递参数: -当参数通过URL的查询字符串传递时,你可以在Action方法中通过参数接收它们。 - -// GET: Home/Details?name=John&age=30 -public IActionResult Details(string name, int age) -{ - // 使用name和age参数 -} -通过Header传递参数: -可以通过[FromHeader]属性来获取HTTP请求头中的参数。 - -public IActionResult GetSecretData([FromHeader] string secretKey) -{ - // 根据secretKey参数执行操作 -} \ No newline at end of file diff --git "a/\346\275\230\347\210\261\347\220\264/20241122.md" "b/\346\275\230\347\210\261\347\220\264/20241122-\346\216\247\345\210\266\345\231\250.md" similarity index 92% rename from "\346\275\230\347\210\261\347\220\264/20241122.md" rename to "\346\275\230\347\210\261\347\220\264/20241122-\346\216\247\345\210\266\345\231\250.md" index 2a6db39822704861c606762db71bcce66fcb07b4..280088dc0219d867fc65f13d3eed978d77da231a 100644 --- "a/\346\275\230\347\210\261\347\220\264/20241122.md" +++ "b/\346\275\230\347\210\261\347\220\264/20241122-\346\216\247\345\210\266\345\231\250.md" @@ -1,4 +1,9 @@ -专项练习-基础能力 +#### 控制器返回类型 +##### 一般数据类型直接返回 + 如int、double、string、IEnumerable等数据类型 IActionResult 一个接口,用于返回HTTP信息状态,如200、401、404等 + 视图 重定向 ActionResult类型 将一般数据类型和HTTP状态信息混合使用 特定于格式的操作结果:如JsonResult和ContentResult POCO(普通旧CLR对象) +#### 专项练习-基础能力 +``` 1、生成一个随机整数,范围[0,100],注意是否包含 Random random = new Random(); int number1 = random.Next(0, 101); @@ -169,4 +174,5 @@ public IActionResult CollectionView() {