diff --git "a/\345\202\205\344\277\212\346\235\260/20241115-\347\254\224\350\256\260\344\273\245\345\217\212\344\275\234\344\270\232.md" "b/\345\202\205\344\277\212\346\235\260/20241115-\347\254\224\350\256\260\344\273\245\345\217\212\344\275\234\344\270\232.md" index 3cdef41254058255722175de249b07236cf5a772..c8896dca51a19b6c1bf03b3ee2d4c5d8f8f9fcac 100644 --- "a/\345\202\205\344\277\212\346\235\260/20241115-\347\254\224\350\256\260\344\273\245\345\217\212\344\275\234\344\270\232.md" +++ "b/\345\202\205\344\277\212\346\235\260/20241115-\347\254\224\350\256\260\344\273\245\345\217\212\344\275\234\344\270\232.md" @@ -1,9 +1,9 @@ -#### 笔记 - -* 1、dotnet new mvc -o 名 cd 名 Views->Home->项目名.cshtml Controllers引用项目方法名 -* 2、wwwroot->css->建项目名.css->写样式 -* 3、.cshtml里用link引用样式 href="~/css/项目名.css" -* 4、dotnet run --project 名 -* 5、ctrl+c 结束任务 -#### 作业 +#### 笔记 + +* 1、dotnet new mvc -o 名 cd 名 Views->Home->项目名.cshtml Controllers引用项目方法名 +* 2、wwwroot->css->建项目名.css->写样式 +* 3、.cshtml里用link引用样式 href="~/css/项目名.css" +* 4、dotnet run --project 名 +* 5、ctrl+c 结束任务 +#### 作业 ![alt text](bfe72b83a3e9e95a79aff048c1fcfae-1.png) \ No newline at end of file diff --git "a/\345\202\205\344\277\212\346\235\260/20241119-MVC\347\273\203\344\271\240.md" "b/\345\202\205\344\277\212\346\235\260/20241119-MVC\347\273\203\344\271\240.md" index 8e0ba12818d58b6772ee44698400a3268c9b0768..8c107ec2f1a34ebec86110abd8649a1448d146d0 100644 --- "a/\345\202\205\344\277\212\346\235\260/20241119-MVC\347\273\203\344\271\240.md" +++ "b/\345\202\205\344\277\212\346\235\260/20241119-MVC\347\273\203\344\271\240.md" @@ -1,86 +1,86 @@ -#### 笔记 -使用[FromBody]属性来接收数据 -```cs -[HttpPost] -public IActionResult Create([FromBody] Item item) -{ - return View(); -} -``` -#### MVC练习 -1. 创建一个控制台项目,没有任何选项,体会项目名称和什么有关系 - * 项目名称 MyConsoleApp 是项目的唯一标识符,它决定了生成的程序集名称、命名空间以及输出的可执行文件的名称。 - * dotnet new console -n Blog -2. 创建一个控制项目,项目名称Blog - * dotnet new console -n Blog -3. 创建一个控制台项目,输出到Blog目录 - * dotnet new console -o Blog -4. 创建一个MVC项目,指定项目名称 - * dotnet new mvc -n Blog -5. 创建一个MVC项目,指定输出目录 - * dotnet new mvc -o Blog -6. 创建一个带解决方案,其下有一个MVC项目,3个类库项目的“综合项目” - * dotnet new sln -n Blog - * dotnet new mvc -n Blog - * dotnet new classlib -n Bg1 - * dotnet new classlib -n Bg2 - * dotnet new classlib -n Bg3 -7. 创建一个项目,在默认控制器(Home)下,新增一个Action方法,名为Ok,同时为其创建对应视图以显示这个视图 -```cs -public IActionResult Ok() - { - return View(); - } -``` -8. 创建一个项目,创建一个新的控制器,名为Blogs,新的控制器拥有一个名为Index的Action,该方法返回一个视图,视图显示“神级预判” -```cs -using Microsoft.AspNetCore.Mvc; -namespace Blog.Controllers; -public class BlogsController : Controller -{ - public IActionResult Index() - { - return Content("神级预判"); - } -} -``` -9. 给第8题的新控制,添加一个新的Action,名为Music,不接受任何参数,并返回对应的视图,视图显示“顶级打野” -```cs -public IActionResult Index() - { - return Content("顶级打野"); - } -``` -10. 给第8题的新控制器,新增一个Action,名为List,不接受任何参数,并返回对应视图,视图显示一个经典CRUD界面 -```cs - public IActionResult List() - { - return View(); - } -

经典CRUD界面

-``` -11. 新增一个控制器,名为Products,该控制器具有一个名为Edit的Action,这个Action接受一个int类型的参数id,显示这个id -```cs -using Microsoft.AspNetCore.Mvc; -namespace Blog.Controllers; -public class ProductsController : Controller -{ - public IActionResult Edit(int id) - { - return Content($`ID:{id}`); - } -} -``` -12. 在11题的新控制器中,新增一个名为Create的Action,该Action接受一个类型为Students(有姓名、年龄、体长属性)的参数,并展示该参数的姓名属性 -```cs - public IActionResult Create([FromBody] Students stu) - { - return Content(stu.Name) - } - public class Students - { - public string Name { get; set; } = null!; - public int Age { get; set; } = null!; - public string Witch { get; set; } = null!; - } +#### 笔记 +使用[FromBody]属性来接收数据 +```cs +[HttpPost] +public IActionResult Create([FromBody] Item item) +{ + return View(); +} +``` +#### MVC练习 +1. 创建一个控制台项目,没有任何选项,体会项目名称和什么有关系 + * 项目名称 MyConsoleApp 是项目的唯一标识符,它决定了生成的程序集名称、命名空间以及输出的可执行文件的名称。 + * dotnet new console -n Blog +2. 创建一个控制项目,项目名称Blog + * dotnet new console -n Blog +3. 创建一个控制台项目,输出到Blog目录 + * dotnet new console -o Blog +4. 创建一个MVC项目,指定项目名称 + * dotnet new mvc -n Blog +5. 创建一个MVC项目,指定输出目录 + * dotnet new mvc -o Blog +6. 创建一个带解决方案,其下有一个MVC项目,3个类库项目的“综合项目” + * dotnet new sln -n Blog + * dotnet new mvc -n Blog + * dotnet new classlib -n Bg1 + * dotnet new classlib -n Bg2 + * dotnet new classlib -n Bg3 +7. 创建一个项目,在默认控制器(Home)下,新增一个Action方法,名为Ok,同时为其创建对应视图以显示这个视图 +```cs +public IActionResult Ok() + { + return View(); + } +``` +8. 创建一个项目,创建一个新的控制器,名为Blogs,新的控制器拥有一个名为Index的Action,该方法返回一个视图,视图显示“神级预判” +```cs +using Microsoft.AspNetCore.Mvc; +namespace Blog.Controllers; +public class BlogsController : Controller +{ + public IActionResult Index() + { + return Content("神级预判"); + } +} +``` +9. 给第8题的新控制,添加一个新的Action,名为Music,不接受任何参数,并返回对应的视图,视图显示“顶级打野” +```cs +public IActionResult Index() + { + return Content("顶级打野"); + } +``` +10. 给第8题的新控制器,新增一个Action,名为List,不接受任何参数,并返回对应视图,视图显示一个经典CRUD界面 +```cs + public IActionResult List() + { + return View(); + } +

经典CRUD界面

+``` +11. 新增一个控制器,名为Products,该控制器具有一个名为Edit的Action,这个Action接受一个int类型的参数id,显示这个id +```cs +using Microsoft.AspNetCore.Mvc; +namespace Blog.Controllers; +public class ProductsController : Controller +{ + public IActionResult Edit(int id) + { + return Content($`ID:{id}`); + } +} +``` +12. 在11题的新控制器中,新增一个名为Create的Action,该Action接受一个类型为Students(有姓名、年龄、体长属性)的参数,并展示该参数的姓名属性 +```cs + public IActionResult Create([FromBody] Students stu) + { + return Content(stu.Name) + } + public class Students + { + public string Name { get; set; } = null!; + public int Age { get; set; } = null!; + public string Witch { get; set; } = null!; + } ``` \ No newline at end of file diff --git "a/\345\202\205\344\277\212\346\235\260/20241119-linux\347\273\203\344\271\240.md" "b/\345\202\205\344\277\212\346\235\260/20241119-linux\347\273\203\344\271\240.md" index de50b068d7ad46a7649759c567e5e7a556c7cb82..6e7f84a18f2651f34962f9c0a78839a58160d721 100644 --- "a/\345\202\205\344\277\212\346\235\260/20241119-linux\347\273\203\344\271\240.md" +++ "b/\345\202\205\344\277\212\346\235\260/20241119-linux\347\273\203\344\271\240.md" @@ -1,130 +1,130 @@ -### Linux练习 - - -1. 任务:尝试使用以下几种方式分别登录服务器,说明它们分别的注意事项,并说明它们之间的区别 - - - ssh客户端 - 1. 确保拥有服务器的SSH IP地址和端口号。 - 2. 输入正确的用户名和密码。 - 3. 根据个人喜好设置字符集、字体样式及大小、窗口保存的内容行数等。 - 4. 设置自动保持连接,以免服务器长时间没有收到数据包而自动断开SSH连接。 - - - tabby应用 - 1. Tabby支持多平台,确保下载适合自己操作系统的版本。 - 2. Tabby自带SFTP功能,可以用于文件传输。 - 3. 在设置SSH连接时,需要填写终端名称、IP地址、端口号、账号密码等信息。 - 4. Tabby支持插件,可以根据需要安装和配置插件以增强功能。 - - - xShell - 1. XShell主要支持Windows系统。 - 2. 设置不间断连接,以防止服务器因长时间无操作而断开连接。 - 3. 关闭响铃和X11,特别是在免费版本中,以避免提示购买Xmanager。 - 4. 可以调整视图设置和主题设置,以适应个人偏好。 - - - putty - 1. PuTTY支持WIN和MAC系统,确保下载适合自己操作系统的版本。 - 2. 修改字符集解决中文乱码问题。 - 3. 修改字体样式及大小,以及窗口保存的内容行数。 - 4. 设置自动保持连接,以维持SSH连接的稳定性。 - -2. 任务:更新软件源,命令:apt update,并了解这一步的实际用处和意义 -![hehesafdafxa](https://20050206kc.oss-cn-guangzhou.aliyuncs.com/hehesafdafxa.gif) -3. 任务:更新软件和补丁,命令:apt upgrade -y,并了解这一步的实际用处意义 -![hihihihihi](https://20050206kc.oss-cn-guangzhou.aliyuncs.com/hihihihihi.gif) -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. 在服务器上安装SDK环境 -![20241124193153](https://20050206kc.oss-cn-guangzhou.aliyuncs.com/20241124193153.png) +### Linux练习 + + +1. 任务:尝试使用以下几种方式分别登录服务器,说明它们分别的注意事项,并说明它们之间的区别 + + - ssh客户端 + 1. 确保拥有服务器的SSH IP地址和端口号。 + 2. 输入正确的用户名和密码。 + 3. 根据个人喜好设置字符集、字体样式及大小、窗口保存的内容行数等。 + 4. 设置自动保持连接,以免服务器长时间没有收到数据包而自动断开SSH连接。 + + - tabby应用 + 1. Tabby支持多平台,确保下载适合自己操作系统的版本。 + 2. Tabby自带SFTP功能,可以用于文件传输。 + 3. 在设置SSH连接时,需要填写终端名称、IP地址、端口号、账号密码等信息。 + 4. Tabby支持插件,可以根据需要安装和配置插件以增强功能。 + + - xShell + 1. XShell主要支持Windows系统。 + 2. 设置不间断连接,以防止服务器因长时间无操作而断开连接。 + 3. 关闭响铃和X11,特别是在免费版本中,以避免提示购买Xmanager。 + 4. 可以调整视图设置和主题设置,以适应个人偏好。 + + - putty + 1. PuTTY支持WIN和MAC系统,确保下载适合自己操作系统的版本。 + 2. 修改字符集解决中文乱码问题。 + 3. 修改字体样式及大小,以及窗口保存的内容行数。 + 4. 设置自动保持连接,以维持SSH连接的稳定性。 + +2. 任务:更新软件源,命令:apt update,并了解这一步的实际用处和意义 +![hehesafdafxa](https://20050206kc.oss-cn-guangzhou.aliyuncs.com/hehesafdafxa.gif) +3. 任务:更新软件和补丁,命令:apt upgrade -y,并了解这一步的实际用处意义 +![hihihihihi](https://20050206kc.oss-cn-guangzhou.aliyuncs.com/hihihihihi.gif) +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. 在服务器上安装SDK环境 +![20241124193153](https://20050206kc.oss-cn-guangzhou.aliyuncs.com/20241124193153.png) diff --git "a/\345\202\205\344\277\212\346\235\260/20241121-mvc\347\254\224\350\256\260.md" "b/\345\202\205\344\277\212\346\235\260/20241121-mvc\347\254\224\350\256\260.md" index eb531c15a36f6c304b81b80cab8e73c55f6e3fa3..beff352ff03115091dbee1a5020077430ac4349f 100644 --- "a/\345\202\205\344\277\212\346\235\260/20241121-mvc\347\254\224\350\256\260.md" +++ "b/\345\202\205\344\277\212\346\235\260/20241121-mvc\347\254\224\350\256\260.md" @@ -1,9 +1,9 @@ -#### 笔记 -使用[FromBody]属性来接收数据 -```cs -[HttpPost] -public IActionResult Create([FromBody] Item item) -{ - return View(); -} +#### 笔记 +使用[FromBody]属性来接收数据 +```cs +[HttpPost] +public IActionResult Create([FromBody] Item item) +{ + return View(); +} ``` \ No newline at end of file diff --git "a/\345\202\205\344\277\212\346\235\260/20241122-\344\270\223\351\241\271\347\273\203\344\271\240-\345\237\272\347\241\200\350\203\275\345\212\233.md" "b/\345\202\205\344\277\212\346\235\260/20241122-\344\270\223\351\241\271\347\273\203\344\271\240-\345\237\272\347\241\200\350\203\275\345\212\233.md" index 6023f429998c4a06b9bae9d0c8d93eef3c52065d..8d39f8ffed0802fe55c2b3f9dfd9659fb7580d19 100644 --- "a/\345\202\205\344\277\212\346\235\260/20241122-\344\270\223\351\241\271\347\273\203\344\271\240-\345\237\272\347\241\200\350\203\275\345\212\233.md" +++ "b/\345\202\205\344\277\212\346\235\260/20241122-\344\270\223\351\241\271\347\273\203\344\271\240-\345\237\272\347\241\200\350\203\275\345\212\233.md" @@ -1,110 +1,110 @@ -#### 专项练习-基础能力 - -1. 生成一个随机整数,范围[0,100],注意是否包含 -```cs -public IActionResult Number() - { - int number =new Random.Next(0, 101);//[0,100] - return Contene($"随机数:{number}"); - } -``` -2. 生成一个随机整数,范围(0,100],注意是否包含 -```cs -public IActionResult Number_2() - { - int number2 =new Random.Next(1, 101);//(0,100] - return Contene($"随机数:{number2}"); - } -``` -3. 生成10个随机整数,范围[5,80],注意是否包含 -```cs -public IActionResult Number_3() - { - List number3 = new List(); - for (int i = 0; i < 10; i++) - { - number3.Add(new Random().Next(5, 81)); - } - return View(number3); - } -``` -4. 定义一个字符串,字符串中有100个中文字符,需要从中随机取1个字符串 -```cs -public IActionResult Number_4() - { - string cn = "阳光灿烂大地暖绿草如茵花娇艳山河壮丽美如画蓝天白云映水面飞鸟翱翔鱼欢跃春夏秋冬四季转日月星辰耀九天男女老少笑开颜手脚并用勤劳作口耳相传智慧添红黄蓝绿色彩艳大小高低各不同多少长短有分别快慢动静皆自然风雨雷电显神奇木石水火有妙用衣食住行不可少喜怒哀乐情万千诗词歌赋韵味长琴棋书画雅趣生仁义礼智信为本忠孝廉耻心中存团结友爱力量大互帮互助共前行努力奋斗创未来幸福生活乐无边"; - int ch = new Random().Next(0, cn.Length); - return Content($"随机字符:{cn[ch].ToString()}"); - } -``` -5. 定义一个字符串,字符串中有100个中文字符,需要从中随机取5-50个字符,组成新的字符 -```cs -public IActionResult Number_5() - { - string cn = "阳光灿烂大地暖绿草如茵花娇艳山河壮丽美如画蓝天白云映水面飞鸟翱翔鱼欢跃春夏秋冬四季转日月星辰耀九天男女老少笑开颜手脚并用勤劳作口耳相传智慧添红黄蓝绿色彩艳大小高低各不同多少长短有分别快慢动静皆自然风雨雷电显神奇木石水火有妙用衣食住行不可少喜怒哀乐情万千诗词歌赋韵味长琴棋书画雅趣生仁义礼智信为本忠孝廉耻心中存团结友爱力量大互帮互助共前行努力奋斗创未来幸福生活乐无边"; - int len = new Random().Next(5, 51); - string str = new string(cn.OrderBy(x => new Random().Next()).Take(len).ToArray()); - - return Content($"随机字符:{str}"); - } -``` -6. 定义2个字符串,第一个字符串中放百家姓,第二个字符串中放中文字符,要求从第一个字符串随机取得一个姓,再从第二个字符串中随机获得1到2个字符组成新字符串,和第一个字符串取得的姓组成一个姓名 -```cs -public class Program -{ - private static readonly string[] Surnames = { "赵", "钱", "孙", "李", "周", "吴", "郑", "王", "冯", "陈" }; // 示例姓氏 - private static readonly string[] ChineseCharacters = { "伟", "刚", "勇", "毅", "俊", "峰", "强", "军", "平", "保" }; // 示例中文字符 - - public static void Main() - { - Random random = new Random(); - string surname = Surnames[random.Next(Surnames.Length)]; - int nameLength = random.Next(1, 3); // 随机生成1或2个字符 - string name = string.Concat(Enumerable.Range(0, nameLength).Select(_ => ChineseCharacters[random.Next(ChineseCharacters.Length)])); - string fullName = surname + name; - - Console.WriteLine($"随机生成的姓名: {fullName}"); - } -} -``` -7. 利用以上方法,随机生成100个BlogCreateDto类型(有Title、Author、Content属性)的对象,其中的内容都是随机生成且长度不定,并将其渲染到视图 -```cs - public class BlogCreateDto -{ - public string Title { get; set; } - public string Author { get; set; } - public string Content { get; set; } -} - - private static readonly string[] Surnames = { "赵", "钱", "孙", "李", "周", "吴", "郑", "王", "冯", "陈" }; // 示例姓氏 - private static readonly string[] ChineseCharacters = { "伟", "刚", "勇", "毅", "俊", "峰", "强", "军", "平", "保" }; // 示例中文字符 - private static readonly string[] SampleTitles = { "如何学习编程", "ASP.NET MVC教程", "C#高级特性", "前端开发技巧", "数据库优化" }; // 示例标题 - private static readonly string[] SampleContents = { "本文介绍了如何学习编程...", "ASP.NET MVC是一个强大的框架...", "C#语言有许多高级特性...", "前端开发需要掌握多种技术...", "数据库优化可以提高性能..." }; // 示例内容 - - private static readonly Random random = new Random(); - - public ActionResult Index() - { - List blogs = new List(); - for (int i = 0; i < 100; i++) - { - blogs.Add(GenerateRandomBlog()); - } - return View(blogs); - } - - private BlogCreateDto GenerateRandomBlog() - { - string surname = Surnames[Random.Next(Surnames.Length)]; - int nameLength = Random.Next(1, 3); // 随机生成1或2个字符 - string name = string.Concat(Enumerable.Range(0, nameLength).Select(_ => ChineseCharacters[random.Next(ChineseCharacters.Length)])); - string fullName = surname + name; - - return new BlogCreateDto - { - Title = SampleTitles[Random.Next(SampleTitles.Length)], - Author = fullName, - Content = SampleContents[Random.Next(SampleContents.Length)] - }; - } +#### 专项练习-基础能力 + +1. 生成一个随机整数,范围[0,100],注意是否包含 +```cs +public IActionResult Number() + { + int number =new Random.Next(0, 101);//[0,100] + return Contene($"随机数:{number}"); + } +``` +2. 生成一个随机整数,范围(0,100],注意是否包含 +```cs +public IActionResult Number_2() + { + int number2 =new Random.Next(1, 101);//(0,100] + return Contene($"随机数:{number2}"); + } +``` +3. 生成10个随机整数,范围[5,80],注意是否包含 +```cs +public IActionResult Number_3() + { + List number3 = new List(); + for (int i = 0; i < 10; i++) + { + number3.Add(new Random().Next(5, 81)); + } + return View(number3); + } +``` +4. 定义一个字符串,字符串中有100个中文字符,需要从中随机取1个字符串 +```cs +public IActionResult Number_4() + { + string cn = "阳光灿烂大地暖绿草如茵花娇艳山河壮丽美如画蓝天白云映水面飞鸟翱翔鱼欢跃春夏秋冬四季转日月星辰耀九天男女老少笑开颜手脚并用勤劳作口耳相传智慧添红黄蓝绿色彩艳大小高低各不同多少长短有分别快慢动静皆自然风雨雷电显神奇木石水火有妙用衣食住行不可少喜怒哀乐情万千诗词歌赋韵味长琴棋书画雅趣生仁义礼智信为本忠孝廉耻心中存团结友爱力量大互帮互助共前行努力奋斗创未来幸福生活乐无边"; + int ch = new Random().Next(0, cn.Length); + return Content($"随机字符:{cn[ch].ToString()}"); + } +``` +5. 定义一个字符串,字符串中有100个中文字符,需要从中随机取5-50个字符,组成新的字符 +```cs +public IActionResult Number_5() + { + string cn = "阳光灿烂大地暖绿草如茵花娇艳山河壮丽美如画蓝天白云映水面飞鸟翱翔鱼欢跃春夏秋冬四季转日月星辰耀九天男女老少笑开颜手脚并用勤劳作口耳相传智慧添红黄蓝绿色彩艳大小高低各不同多少长短有分别快慢动静皆自然风雨雷电显神奇木石水火有妙用衣食住行不可少喜怒哀乐情万千诗词歌赋韵味长琴棋书画雅趣生仁义礼智信为本忠孝廉耻心中存团结友爱力量大互帮互助共前行努力奋斗创未来幸福生活乐无边"; + int len = new Random().Next(5, 51); + string str = new string(cn.OrderBy(x => new Random().Next()).Take(len).ToArray()); + + return Content($"随机字符:{str}"); + } +``` +6. 定义2个字符串,第一个字符串中放百家姓,第二个字符串中放中文字符,要求从第一个字符串随机取得一个姓,再从第二个字符串中随机获得1到2个字符组成新字符串,和第一个字符串取得的姓组成一个姓名 +```cs +public class Program +{ + private static readonly string[] Surnames = { "赵", "钱", "孙", "李", "周", "吴", "郑", "王", "冯", "陈" }; // 示例姓氏 + private static readonly string[] ChineseCharacters = { "伟", "刚", "勇", "毅", "俊", "峰", "强", "军", "平", "保" }; // 示例中文字符 + + public static void Main() + { + Random random = new Random(); + string surname = Surnames[random.Next(Surnames.Length)]; + int nameLength = random.Next(1, 3); // 随机生成1或2个字符 + string name = string.Concat(Enumerable.Range(0, nameLength).Select(_ => ChineseCharacters[random.Next(ChineseCharacters.Length)])); + string fullName = surname + name; + + Console.WriteLine($"随机生成的姓名: {fullName}"); + } +} +``` +7. 利用以上方法,随机生成100个BlogCreateDto类型(有Title、Author、Content属性)的对象,其中的内容都是随机生成且长度不定,并将其渲染到视图 +```cs + public class BlogCreateDto +{ + public string Title { get; set; } + public string Author { get; set; } + public string Content { get; set; } +} + + private static readonly string[] Surnames = { "赵", "钱", "孙", "李", "周", "吴", "郑", "王", "冯", "陈" }; // 示例姓氏 + private static readonly string[] ChineseCharacters = { "伟", "刚", "勇", "毅", "俊", "峰", "强", "军", "平", "保" }; // 示例中文字符 + private static readonly string[] SampleTitles = { "如何学习编程", "ASP.NET MVC教程", "C#高级特性", "前端开发技巧", "数据库优化" }; // 示例标题 + private static readonly string[] SampleContents = { "本文介绍了如何学习编程...", "ASP.NET MVC是一个强大的框架...", "C#语言有许多高级特性...", "前端开发需要掌握多种技术...", "数据库优化可以提高性能..." }; // 示例内容 + + private static readonly Random random = new Random(); + + public ActionResult Index() + { + List blogs = new List(); + for (int i = 0; i < 100; i++) + { + blogs.Add(GenerateRandomBlog()); + } + return View(blogs); + } + + private BlogCreateDto GenerateRandomBlog() + { + string surname = Surnames[Random.Next(Surnames.Length)]; + int nameLength = Random.Next(1, 3); // 随机生成1或2个字符 + string name = string.Concat(Enumerable.Range(0, nameLength).Select(_ => ChineseCharacters[random.Next(ChineseCharacters.Length)])); + string fullName = surname + name; + + return new BlogCreateDto + { + Title = SampleTitles[Random.Next(SampleTitles.Length)], + Author = fullName, + Content = SampleContents[Random.Next(SampleContents.Length)] + }; + } ``` \ No newline at end of file diff --git "a/\345\202\205\344\277\212\346\235\260/20241122-\344\270\223\351\241\271\347\273\203\344\271\240-\346\216\247\345\210\266\345\231\250\344\274\240\345\217\202.md" "b/\345\202\205\344\277\212\346\235\260/20241122-\344\270\223\351\241\271\347\273\203\344\271\240-\346\216\247\345\210\266\345\231\250\344\274\240\345\217\202.md" index 21693b3dd829c89ebd8846505c2aa1671a6ebe09..b5d3a5296c2e1d955583fd6e4c21bcb17ad6bbf4 100644 --- "a/\345\202\205\344\277\212\346\235\260/20241122-\344\270\223\351\241\271\347\273\203\344\271\240-\346\216\247\345\210\266\345\231\250\344\274\240\345\217\202.md" +++ "b/\345\202\205\344\277\212\346\235\260/20241122-\344\270\223\351\241\271\347\273\203\344\271\240-\346\216\247\345\210\266\345\231\250\344\274\240\345\217\202.md" @@ -1,88 +1,88 @@ -#### 笔记 -渲染视图 -```csharp -public IActionResult Index() -{ - return View(); -} -``` -#### 专项练习-控制器传参 - -1. 简单参数传递 在一个叫Blog控制器中,定义一个叫Index的Action,并且传递一个int类型的值,id为变量名 - -```cs -public IActionResult Index(int id) - { - return View(); - } -``` - -2. 简单参数传递 在一个叫Blog控制器中,定义一个叫Index_2的Action,并且传递一个string类型的值,id为变量名 - -```cs -public string Index_2(int id) - { - return id.ToString(); - } -``` - -3. 简单参数传递 在一个叫Blog控制器中,定义一个叫Index_3的Action,并且传递一个string类型的值,name为变量名 - -```cs -public IActionResult Index_3([FromBody]Student stu) - { - return Content(stu.Name); - } - public class Student - { - public string Name { get; set; } = null!; - } -``` - -4. 复杂参数传递 在一个叫Blog的控制器中,定义一个名为Create的Action,并且传递一个BlogCreateDto类型的值,blogCreateDto为变量名 - > PS BlogCreateDto类型具有Title、Author、Content自动属性 - > -```cs -public IActionResult Create([FromBody] BlogCreateDto blogCreateDto) - { - return View(); - } - public class BlogCreateDto - { - 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自动属性 - > -```cs -public IActionResult Create([FromBody] Products productCreateDto) - { - return View(); - } - 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自动属性 - > -```cs -public IActionResult Create([FromBody] Students studentCreateDto) - { - return View(); - } - public class Students - { - public string StudentName { get; set; } = null!; - public string Sex { get; set; } = null!; - public string Age { get; set; } = null!; - } -``` +#### 笔记 +渲染视图 +```csharp +public IActionResult Index() +{ + return View(); +} +``` +#### 专项练习-控制器传参 + +1. 简单参数传递 在一个叫Blog控制器中,定义一个叫Index的Action,并且传递一个int类型的值,id为变量名 + +```cs +public IActionResult Index(int id) + { + return View(); + } +``` + +2. 简单参数传递 在一个叫Blog控制器中,定义一个叫Index_2的Action,并且传递一个string类型的值,id为变量名 + +```cs +public string Index_2(int id) + { + return id.ToString(); + } +``` + +3. 简单参数传递 在一个叫Blog控制器中,定义一个叫Index_3的Action,并且传递一个string类型的值,name为变量名 + +```cs +public IActionResult Index_3([FromBody]Student stu) + { + return Content(stu.Name); + } + public class Student + { + public string Name { get; set; } = null!; + } +``` + +4. 复杂参数传递 在一个叫Blog的控制器中,定义一个名为Create的Action,并且传递一个BlogCreateDto类型的值,blogCreateDto为变量名 + > PS BlogCreateDto类型具有Title、Author、Content自动属性 + > +```cs +public IActionResult Create([FromBody] BlogCreateDto blogCreateDto) + { + return View(); + } + public class BlogCreateDto + { + 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自动属性 + > +```cs +public IActionResult Create([FromBody] Products productCreateDto) + { + return View(); + } + 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自动属性 + > +```cs +public IActionResult Create([FromBody] Students studentCreateDto) + { + return View(); + } + public class Students + { + public string StudentName { get; set; } = null!; + public string Sex { get; set; } = null!; + public string Age { get; set; } = null!; + } +``` diff --git "a/\345\202\205\344\277\212\346\235\260/20241126-\347\254\224\350\256\260.md" "b/\345\202\205\344\277\212\346\235\260/20241126-\347\254\224\350\256\260.md" index 9fceeada8a903890182573e15b031f1245dcf530..eb0b6b9978adaa48ad180ba9146cb0cc9ab74bf1 100644 --- "a/\345\202\205\344\277\212\346\235\260/20241126-\347\254\224\350\256\260.md" +++ "b/\345\202\205\344\277\212\346\235\260/20241126-\347\254\224\350\256\260.md" @@ -1,9 +1,9 @@ -### 笔记 -## 正向代理 - - -pc 通过找一个代理服务器 让代理服务器去访问 web服务器 - -## 反向代理 - +### 笔记 +## 正向代理 + + +pc 通过找一个代理服务器 让代理服务器去访问 web服务器 + +## 反向代理 + web服务器设置一个代理服务器让pc端 通过访问 代理服务器 访问 web服务器 \ No newline at end of file diff --git "a/\345\202\205\344\277\212\346\235\260/20241128-\344\275\234\344\270\232\345\217\212\347\254\224\350\256\260.md" "b/\345\202\205\344\277\212\346\235\260/20241128-\344\275\234\344\270\232\345\217\212\347\254\224\350\256\260.md" index a1768fa84a78340743724b9c846cbbd75184a167..64e2bfb8ce46786677e243e9206569dfb8c51946 100644 --- "a/\345\202\205\344\277\212\346\235\260/20241128-\344\275\234\344\270\232\345\217\212\347\254\224\350\256\260.md" +++ "b/\345\202\205\344\277\212\346\235\260/20241128-\344\275\234\344\270\232\345\217\212\347\254\224\350\256\260.md" @@ -1,25 +1,25 @@ -#### 笔记 -接收view -@model 命名空间.类名 @Model.键 - -定位点 -``` - -``` -#### 专业项练习-视图及其模板引擎 - -1. 渲染(展示)简单数据类型到视图 - -![](https://gitee.com/he-ziyueL/img/raw/master/20241201183422.png) -2. 渲染(展示)对象数据到视图 - - -3. 渲染(展示)集合数据到视图 - -![{DF2AB127-5378-4965-A2B8-FAF1457C59B7}](https://gitee.com/guo-mengyuan11/picture-bed/raw/master/images/202412011554225.png) -4. 渲染(展示)包含集合数据的对象数据到视图 - -![4](https://sgqt.oss-cn-hangzhou.aliyuncs.com/4.png) -5. 尝试构建如下图所示的经典CRUD列表 - +#### 笔记 +接收view +@model 命名空间.类名 @Model.键 + +定位点 +``` + +``` +#### 专业项练习-视图及其模板引擎 + +1. 渲染(展示)简单数据类型到视图 + +![](https://gitee.com/he-ziyueL/img/raw/master/20241201183422.png) +2. 渲染(展示)对象数据到视图 + + +3. 渲染(展示)集合数据到视图 + +![{DF2AB127-5378-4965-A2B8-FAF1457C59B7}](https://gitee.com/guo-mengyuan11/picture-bed/raw/master/images/202412011554225.png) +4. 渲染(展示)包含集合数据的对象数据到视图 + +![4](https://sgqt.oss-cn-hangzhou.aliyuncs.com/4.png) +5. 尝试构建如下图所示的经典CRUD列表 + ![20241201214137](https://yihen1556.oss-cn-guangzhou.aliyuncs.com/setu/20241201214137.png) \ No newline at end of file diff --git "a/\345\202\205\344\277\212\346\235\260/20241203-\347\254\224\350\256\260\345\217\212\347\273\203\344\271\240.md" "b/\345\202\205\344\277\212\346\235\260/20241203-\347\254\224\350\256\260\345\217\212\347\273\203\344\271\240.md" index 5d3744cc29d5fe4e40ebae14b7dc843d25b59b79..ced92f57311a3adf3a7a3adeaac7423b0c1ce2db 100644 --- "a/\345\202\205\344\277\212\346\235\260/20241203-\347\254\224\350\256\260\345\217\212\347\273\203\344\271\240.md" +++ "b/\345\202\205\344\277\212\346\235\260/20241203-\347\254\224\350\256\260\345\217\212\347\273\203\344\271\240.md" @@ -1,19 +1,19 @@ -#### 笔记 -基本表单结构: -```cs -
- - -``` -#### 作业 -* 表单 - -![](https://gitee.com/fjj04/picture-bed/raw/master/img/20241208200528210.png) -* 新增 - -![](https://gitee.com/fjj04/picture-bed/raw/master/img/20241208200625794.png) - -![](https://gitee.com/fjj04/picture-bed/raw/master/img/20241208200717957.png) -* 删除 - +#### 笔记 +基本表单结构: +```cs + + + +``` +#### 作业 +* 表单 + +![](https://gitee.com/fjj04/picture-bed/raw/master/img/20241208200528210.png) +* 新增 + +![](https://gitee.com/fjj04/picture-bed/raw/master/img/20241208200625794.png) + +![](https://gitee.com/fjj04/picture-bed/raw/master/img/20241208200717957.png) +* 删除 + ![](https://gitee.com/fjj04/picture-bed/raw/master/img/20241208200657645.png) \ No newline at end of file diff --git "a/\345\202\205\344\277\212\346\235\260/20241205-\347\254\224\350\256\260\345\217\212\347\273\203\344\271\240.md" "b/\345\202\205\344\277\212\346\235\260/20241205-\347\254\224\350\256\260\345\217\212\347\273\203\344\271\240.md" index c8a9a898a2731226d988009492193ac698c6a578..e1c6906dcfca84f8a3fe1b039756138ee596b3ae 100644 --- "a/\345\202\205\344\277\212\346\235\260/20241205-\347\254\224\350\256\260\345\217\212\347\273\203\344\271\240.md" +++ "b/\345\202\205\344\277\212\346\235\260/20241205-\347\254\224\350\256\260\345\217\212\347\273\203\344\271\240.md" @@ -1,401 +1,401 @@ -## 笔记 -### Linq集成查询和Lambda表达式 - -1. First() FirstOrDefault() 获取集合中(符合条件的)第一个 - - - First() 这个如果没有获取到,则报错 - - FirstOrDefault() 没有获取到,则返回Null - -2. Single() SingleOrDefault() 获取集合中(符合条件)的其中一个 - - - Single() 这个如果没有获取到,则报错 - - SingleOrDefault() 没有获取到,则返回Null - -3. Where() 获取集合中符合条件的元素,将它们筛选出来放入一个新的集合中返回 - - - Where 查找符合条件的内容 - -4. Select() 返回指定内容 - - - Select() 返回指定内容 Select(x=>new {x.Id}) - -## 作业 -##### 基础练习 - -1. **查询特定元素** - 找出数组中等于5的元素。 - - ```csharp - int[] numbers = [1, 2, 3, 4, 5, 6]; - var num=numbers.FirstOrDefault(n=>n==5); - return View(num); - ``` - -2. **查询特定范围的元素** - 找出数组中在2到8之间的元素。 - - ```csharp - int[] numbers = {1, 2, 3, 4, 5, 6}; - var num = numbers.Where(n => n >= 2 && n <= 8).ToList(); - return View(num); - ``` - -3. **查询并转换元素** - 将数组中的每个数字乘以2。 - - ```csharp - int[] numbers = { 1, 2, 3, 4, 5, 6 }; - var num = numbers.Select(n => n=n*2).ToList(); - return View(num); - ``` - -4. **查询特定属性的对象** - 找出所有名字以"王"开头的学生。 - - ```csharp - List students = new List - { - new Student {Id=1, Name = "王有才", Age = 21 }, - new Student {Id=2, Name = "王中王", Age = 22 }, - new Student {Id=3, Name = "张语嫣", Age = 23 }, - new Student {Id=4, Name = "詹宇航", Age = 35 }, - new Student {Id=5, Name = "郑雨良", Age = 26 }, - }; - var name = students.Where(s => s.Name.StartsWith("王")).ToList(); - return View(name); - ``` - -5. **查询并排序** - 找出所有年龄大于20岁的学生,并按年龄降序排列。 - - ```csharp - List students = new List - { - new Student {Id=1, Name = "王有才", Age = 21 }, - new Student {Id=2, Name = "罗婷", Age = 21 }, - new Student {Id=3, Name = "王中王", Age = 22 }, - new Student {Id=4, Name = "李子柒", Age = 22 }, - new Student {Id=5, Name = "张语嫣", Age = 23 }, - new Student {Id=6, Name = "詹宇航", Age = 35 }, - new Student {Id=7, Name = "郑雨良", Age = 26 }, - new Student {Id=8, Name = "欧文", Age = 26 }, - - }; - var name = students.Where(s => s.Age > 20).OrderByDescending(s => s.Age).ToList(); - return View(name); - ``` - -6. **查询并去重** - 找出数组中所有不重复的数字。 - - ```csharp - int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; - var num = numbers.Distinct().ToArray(); - return View(model); - ``` - -7. **查询第一个元素** - 找出数组中第一个大于3的元素。 - - ```csharp - int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; - var num = numbers.FirstOrDefault(n => n > 3); - return View(num); - ``` - -8. **查询最后一个元素** - 找出数组中最后一个小于7的元素。 - - ```csharp - int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; - var num = numbers.LastOrDefault(n => n<7); - return View(num); - ``` - -9. **查询元素是否存在** - 检查数组中是否存在大于10的元素。 - - ```csharp - int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; - var num = numbers.Any(n => n > 10); - ``` - -10. **查询元素的计数** - 计算数组中大于5的元素数量。 - - ```csharp - int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; - var num = numbers.Count(n => n > 5); - ``` - -11. **查询元素的总和** - 计算数组中所有元素的总和。 - - ```csharp - int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; - var num = numbers.Sum(); - ``` - -12. **查询元素的最大值** - 找出数组中的最大值。 - - ```csharp - int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; - var num = numbers.Max(); - ``` - -13. **查询元素的最小值** - 找出数组中的最小值。 - - ```csharp - int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; - var num = numbers.Min(); - ``` - -14. **查询元素的平均值** - 计算数组中所有元素的平均值。 - - ```csharp - int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; - var num = numbers.Average(); - ``` - -15. **查询特定条件的元素** - 找出数组中能被3整除的元素。 - - ```csharp - int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; - var num = numbers.Where(n => n % 3 == 0); - ``` - -![](https://gitee.com/fjj04/picture-bed/raw/master/img/20241208171746432.png) - -##### 中级练习 - -16. **查询并选择特定属性** - 找出所有学生的姓名和年龄。 - - ```csharp - List students = new List - { - new Student {Id=1, Name = "王有才", Age = 21 }, - new Student {Id=2, Name = "罗婷", Age = 21 }, - new Student {Id=3, Name = "王中王", Age = 22 }, - new Student {Id=4, Name = "李子柒", Age = 22 }, - new Student {Id=5, Name = "张语嫣", Age = 23 }, - new Student {Id=6, Name = "詹宇航", Age = 35 }, - new Student {Id=7, Name = "郑雨良", Age = 26 }, - new Student {Id=8, Name = "欧文", Age = 26 }, - }; - var stu = students.Select(static a => new { a.Name, a.Age }); - foreach (var name in stu) - { - Console.WriteLine($"姓名: {name.Name} ,年龄:{name.Age}"); - } - ``` - -![](https://gitee.com/fjj04/picture-bed/raw/master/img/20241208174612245.png) -17. **查询并分组** - 按年龄分组学生,并计算每个年龄组的学生数量。 - - ```csharp - List students = new List - { - new Student {Id=1, Name = "王有才", Age = 21 }, - new Student {Id=2, Name = "罗婷", Age = 21 }, - new Student {Id=3, Name = "王中王", Age = 22 }, - new Student {Id=4, Name = "李子柒", Age = 22 }, - new Student {Id=5, Name = "张语嫣", Age = 23 }, - new Student {Id=6, Name = "詹宇航", Age = 35 }, - new Student {Id=7, Name = "郑雨良", Age = 26 }, - new Student {Id=8, Name = "欧文", Age = 26 }, - }; - var stu17 = students.GroupBy(student => student.Age).Select(group => new { Age = group.Key, Count = group.Count()}); - foreach (var group in stu17) - { - Console.WriteLine($"年龄: {group.Age}, 数量: {group.Count}"); - } - ``` - -![](https://gitee.com/fjj04/picture-bed/raw/master/img/20241208182407327.png) -18. **查询并联结** - 联结学生和课程表,找出每个学生的所有课程。 - - ```csharp - List students = new List - { - new Student {Id=1, Name = "王有才", Age = 21 }, - new Student {Id=2, Name = "罗婷", Age = 21 }, - new Student {Id=3, Name = "王中王", Age = 22 }, - new Student {Id=4, Name = "李子柒", Age = 22 }, - new Student {Id=5, Name = "张语嫣", Age = 23 }, - new Student {Id=6, Name = "詹宇航", Age = 35 }, - new Student {Id=7, Name = "郑雨良", Age = 26 }, - new Student {Id=8, Name = "欧文", Age = 26 }, - }; - List courses=new List - { - new Course{StudentId=1,CourseName="英语"}, - new Course{StudentId=1,CourseName="数学"}, - new Course{StudentId=2,CourseName="语文"}, - new Course{StudentId=3,CourseName="物理"}, - new Course{StudentId=4,CourseName="化学"}, - new Course{StudentId=4,CourseName="生物"}, - new Course{StudentId=4,CourseName="语文"}, - }; - var studentCourses = from student in students join course in courses on student.Id equals course.StudentId into studentCourseGroup - select new{StudentName = student.Name,Courses = studentCourseGroup.Select(c => c.CourseName).ToList()}; - Console.WriteLine("每个学生的所有课程:"); - foreach (var sc in studentCourses) - { - Console.WriteLine($"学生: {sc.StudentName}, 课程: {string.Join(", ", sc.Courses)}"); - } - ``` - -![](https://gitee.com/fjj04/picture-bed/raw/master/img/20241208185209194.png) -19. **查询并反转** - 反转数组中的元素顺序。 - - ```csharp - int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; - var num19 = numbers.Reverse().ToArray(); - Console.WriteLine("反转后的数组: " + string.Join(", ", num19)); - - ``` -![](https://gitee.com/fjj04/picture-bed/raw/master/img/20241208192015708.png) -20. **查询并填充** - 找出数组中第一个大于2的元素,并用它填充后面的所有位置。 - - ```csharp - int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; - int fillValue = -1; // 初始化为-1,表示未找到 - for (int i = 0; i < numbers.Length; i++) - { - if (numbers[i] > 2) - { - fillValue = numbers[i]; - break; - } - } - // 如果找到了大于2的元素,则用它填充后面的所有位置 - if (fillValue != -1) - { - for (int i = Array.IndexOf(numbers, fillValue); i < numbers.Length; i++) - { - numbers[i] = fillValue; - } - } - // 输出修改后的数组 - Console.WriteLine("数组: " + string.Join(", ", numbers)); - ``` - -![](https://gitee.com/fjj04/picture-bed/raw/master/img/20241208193141268.png) -21. **查询并排除** - 从数组中排除所有小于5的元素。 - ```csharp - int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; - var num21=numbers.Where((n=>n>5)).ToArray(); - Console.WriteLine("数组: " + string.Join(", ", num21)); - ``` - -![](https://gitee.com/fjj04/picture-bed/raw/master/img/20241208193448670.png) -22. **查询并填充默认值** - 如果数组中存在null值,用默认值0替换。 - - ```csharp - var numbers12=new List{ 1, null, 3, null, 5 }; - var num22 = numbers12.Select((n => n ?? 0)).ToArray(); - Console.WriteLine("数组: " + string.Join(", ", num22)); - ``` - -![](https://gitee.com/fjj04/picture-bed/raw/master/img/20241208194022423.png) -23. **查询并转换类型** - 将字符串数组转换为整数数组。 - - ```csharp - string[] stringNumbers = { "1", "2", "3", "4" }; - int[] num23 = stringNumbers.Select(int.Parse).ToArray(); - Console.WriteLine("数组: " + string.Join(", ", num23)); - ``` - -![](https://gitee.com/fjj04/picture-bed/raw/master/img/20241208194323585.png) - -24. **查询并使用OfType过滤** - 从对象数组中过滤出字符串类型的元素。 - - ```csharp - object[] objects = { "String", 123, "Another String", 456 }; - var result = objects.OfType().ToList(); - foreach (var num24 in result) - { - Console.WriteLine(num24); - } - ``` - -![](https://gitee.com/fjj04/picture-bed/raw/master/img/20241208194613524.png) -##### 高级练习 - -25. **查询并使用Zip合并** - 合并两个数组,并创建一个包含元素对的新数组。 - - ```csharp - int[] numbers1 = { 1, 2, 3 }; - int[] numbers2 = { 4, 5, 6 }; - var num25 = numbers1.Zip(numbers2, (n1, n2) => new { n1, n2 }).ToList(); - foreach (var num in num25) - { - Console.WriteLine($"({num.n1}, {num.n2})"); - } - ``` - -![](https://gitee.com/fjj04/picture-bed/raw/master/img/20241208195117560.png) -26. **查询并使用Range生成** - 生成一个包含1到10的整数数组。 - - ```csharp - int[] num26=Enumerable.Range(1,10).ToArray(); - foreach (var item in num26) - { - Console.WriteLine(item); - } - ``` - -![](https://gitee.com/fjj04/picture-bed/raw/master/img/20241208195453841.png) -27. **查询并使用Repeat重复** - 重复一个元素多次,创建一个新数组。 - - ```csharp - int[] num27=Enumerable.Repeat(2,10).ToArray(); - foreach (var item in num27) - { - Console.WriteLine(item); - } - ``` - -![](https://gitee.com/fjj04/picture-bed/raw/master/img/20241208195711400.png) -28. **查询并使用Take限制数量** - 从数组中取出前5个元素。 - - ```csharp - int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; - int[] num28=numbers.Take(5).ToArray(); - foreach (var item in num28) - { - Console.WriteLine(item); - } - ``` - -![](https://gitee.com/fjj04/picture-bed/raw/master/img/20241208195931924.png) -29. **查询并使用Skip跳过元素** - 跳过数组中的前3个元素,然后取出剩余的元素。 - - ```csharp - int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; - int[] num29=numbers.Skip(3).ToArray(); - foreach (var item in num29) - { - Console.WriteLine(item); - } - ``` - -![](https://gitee.com/fjj04/picture-bed/raw/master/img/20241208200126295.png) +## 笔记 +### Linq集成查询和Lambda表达式 + +1. First() FirstOrDefault() 获取集合中(符合条件的)第一个 + + - First() 这个如果没有获取到,则报错 + - FirstOrDefault() 没有获取到,则返回Null + +2. Single() SingleOrDefault() 获取集合中(符合条件)的其中一个 + + - Single() 这个如果没有获取到,则报错 + - SingleOrDefault() 没有获取到,则返回Null + +3. Where() 获取集合中符合条件的元素,将它们筛选出来放入一个新的集合中返回 + + - Where 查找符合条件的内容 + +4. Select() 返回指定内容 + + - Select() 返回指定内容 Select(x=>new {x.Id}) + +## 作业 +##### 基础练习 + +1. **查询特定元素** + 找出数组中等于5的元素。 + + ```csharp + int[] numbers = [1, 2, 3, 4, 5, 6]; + var num=numbers.FirstOrDefault(n=>n==5); + return View(num); + ``` + +2. **查询特定范围的元素** + 找出数组中在2到8之间的元素。 + + ```csharp + int[] numbers = {1, 2, 3, 4, 5, 6}; + var num = numbers.Where(n => n >= 2 && n <= 8).ToList(); + return View(num); + ``` + +3. **查询并转换元素** + 将数组中的每个数字乘以2。 + + ```csharp + int[] numbers = { 1, 2, 3, 4, 5, 6 }; + var num = numbers.Select(n => n=n*2).ToList(); + return View(num); + ``` + +4. **查询特定属性的对象** + 找出所有名字以"王"开头的学生。 + + ```csharp + List students = new List + { + new Student {Id=1, Name = "王有才", Age = 21 }, + new Student {Id=2, Name = "王中王", Age = 22 }, + new Student {Id=3, Name = "张语嫣", Age = 23 }, + new Student {Id=4, Name = "詹宇航", Age = 35 }, + new Student {Id=5, Name = "郑雨良", Age = 26 }, + }; + var name = students.Where(s => s.Name.StartsWith("王")).ToList(); + return View(name); + ``` + +5. **查询并排序** + 找出所有年龄大于20岁的学生,并按年龄降序排列。 + + ```csharp + List students = new List + { + new Student {Id=1, Name = "王有才", Age = 21 }, + new Student {Id=2, Name = "罗婷", Age = 21 }, + new Student {Id=3, Name = "王中王", Age = 22 }, + new Student {Id=4, Name = "李子柒", Age = 22 }, + new Student {Id=5, Name = "张语嫣", Age = 23 }, + new Student {Id=6, Name = "詹宇航", Age = 35 }, + new Student {Id=7, Name = "郑雨良", Age = 26 }, + new Student {Id=8, Name = "欧文", Age = 26 }, + + }; + var name = students.Where(s => s.Age > 20).OrderByDescending(s => s.Age).ToList(); + return View(name); + ``` + +6. **查询并去重** + 找出数组中所有不重复的数字。 + + ```csharp + int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; + var num = numbers.Distinct().ToArray(); + return View(model); + ``` + +7. **查询第一个元素** + 找出数组中第一个大于3的元素。 + + ```csharp + int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; + var num = numbers.FirstOrDefault(n => n > 3); + return View(num); + ``` + +8. **查询最后一个元素** + 找出数组中最后一个小于7的元素。 + + ```csharp + int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; + var num = numbers.LastOrDefault(n => n<7); + return View(num); + ``` + +9. **查询元素是否存在** + 检查数组中是否存在大于10的元素。 + + ```csharp + int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; + var num = numbers.Any(n => n > 10); + ``` + +10. **查询元素的计数** + 计算数组中大于5的元素数量。 + + ```csharp + int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; + var num = numbers.Count(n => n > 5); + ``` + +11. **查询元素的总和** + 计算数组中所有元素的总和。 + + ```csharp + int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; + var num = numbers.Sum(); + ``` + +12. **查询元素的最大值** + 找出数组中的最大值。 + + ```csharp + int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; + var num = numbers.Max(); + ``` + +13. **查询元素的最小值** + 找出数组中的最小值。 + + ```csharp + int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; + var num = numbers.Min(); + ``` + +14. **查询元素的平均值** + 计算数组中所有元素的平均值。 + + ```csharp + int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; + var num = numbers.Average(); + ``` + +15. **查询特定条件的元素** + 找出数组中能被3整除的元素。 + + ```csharp + int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; + var num = numbers.Where(n => n % 3 == 0); + ``` + +![](https://gitee.com/fjj04/picture-bed/raw/master/img/20241208171746432.png) + +##### 中级练习 + +16. **查询并选择特定属性** + 找出所有学生的姓名和年龄。 + + ```csharp + List students = new List + { + new Student {Id=1, Name = "王有才", Age = 21 }, + new Student {Id=2, Name = "罗婷", Age = 21 }, + new Student {Id=3, Name = "王中王", Age = 22 }, + new Student {Id=4, Name = "李子柒", Age = 22 }, + new Student {Id=5, Name = "张语嫣", Age = 23 }, + new Student {Id=6, Name = "詹宇航", Age = 35 }, + new Student {Id=7, Name = "郑雨良", Age = 26 }, + new Student {Id=8, Name = "欧文", Age = 26 }, + }; + var stu = students.Select(static a => new { a.Name, a.Age }); + foreach (var name in stu) + { + Console.WriteLine($"姓名: {name.Name} ,年龄:{name.Age}"); + } + ``` + +![](https://gitee.com/fjj04/picture-bed/raw/master/img/20241208174612245.png) +17. **查询并分组** + 按年龄分组学生,并计算每个年龄组的学生数量。 + + ```csharp + List students = new List + { + new Student {Id=1, Name = "王有才", Age = 21 }, + new Student {Id=2, Name = "罗婷", Age = 21 }, + new Student {Id=3, Name = "王中王", Age = 22 }, + new Student {Id=4, Name = "李子柒", Age = 22 }, + new Student {Id=5, Name = "张语嫣", Age = 23 }, + new Student {Id=6, Name = "詹宇航", Age = 35 }, + new Student {Id=7, Name = "郑雨良", Age = 26 }, + new Student {Id=8, Name = "欧文", Age = 26 }, + }; + var stu17 = students.GroupBy(student => student.Age).Select(group => new { Age = group.Key, Count = group.Count()}); + foreach (var group in stu17) + { + Console.WriteLine($"年龄: {group.Age}, 数量: {group.Count}"); + } + ``` + +![](https://gitee.com/fjj04/picture-bed/raw/master/img/20241208182407327.png) +18. **查询并联结** + 联结学生和课程表,找出每个学生的所有课程。 + + ```csharp + List students = new List + { + new Student {Id=1, Name = "王有才", Age = 21 }, + new Student {Id=2, Name = "罗婷", Age = 21 }, + new Student {Id=3, Name = "王中王", Age = 22 }, + new Student {Id=4, Name = "李子柒", Age = 22 }, + new Student {Id=5, Name = "张语嫣", Age = 23 }, + new Student {Id=6, Name = "詹宇航", Age = 35 }, + new Student {Id=7, Name = "郑雨良", Age = 26 }, + new Student {Id=8, Name = "欧文", Age = 26 }, + }; + List courses=new List + { + new Course{StudentId=1,CourseName="英语"}, + new Course{StudentId=1,CourseName="数学"}, + new Course{StudentId=2,CourseName="语文"}, + new Course{StudentId=3,CourseName="物理"}, + new Course{StudentId=4,CourseName="化学"}, + new Course{StudentId=4,CourseName="生物"}, + new Course{StudentId=4,CourseName="语文"}, + }; + var studentCourses = from student in students join course in courses on student.Id equals course.StudentId into studentCourseGroup + select new{StudentName = student.Name,Courses = studentCourseGroup.Select(c => c.CourseName).ToList()}; + Console.WriteLine("每个学生的所有课程:"); + foreach (var sc in studentCourses) + { + Console.WriteLine($"学生: {sc.StudentName}, 课程: {string.Join(", ", sc.Courses)}"); + } + ``` + +![](https://gitee.com/fjj04/picture-bed/raw/master/img/20241208185209194.png) +19. **查询并反转** + 反转数组中的元素顺序。 + + ```csharp + int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; + var num19 = numbers.Reverse().ToArray(); + Console.WriteLine("反转后的数组: " + string.Join(", ", num19)); + + ``` +![](https://gitee.com/fjj04/picture-bed/raw/master/img/20241208192015708.png) +20. **查询并填充** + 找出数组中第一个大于2的元素,并用它填充后面的所有位置。 + + ```csharp + int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; + int fillValue = -1; // 初始化为-1,表示未找到 + for (int i = 0; i < numbers.Length; i++) + { + if (numbers[i] > 2) + { + fillValue = numbers[i]; + break; + } + } + // 如果找到了大于2的元素,则用它填充后面的所有位置 + if (fillValue != -1) + { + for (int i = Array.IndexOf(numbers, fillValue); i < numbers.Length; i++) + { + numbers[i] = fillValue; + } + } + // 输出修改后的数组 + Console.WriteLine("数组: " + string.Join(", ", numbers)); + ``` + +![](https://gitee.com/fjj04/picture-bed/raw/master/img/20241208193141268.png) +21. **查询并排除** + 从数组中排除所有小于5的元素。 + ```csharp + int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; + var num21=numbers.Where((n=>n>5)).ToArray(); + Console.WriteLine("数组: " + string.Join(", ", num21)); + ``` + +![](https://gitee.com/fjj04/picture-bed/raw/master/img/20241208193448670.png) +22. **查询并填充默认值** + 如果数组中存在null值,用默认值0替换。 + + ```csharp + var numbers12=new List{ 1, null, 3, null, 5 }; + var num22 = numbers12.Select((n => n ?? 0)).ToArray(); + Console.WriteLine("数组: " + string.Join(", ", num22)); + ``` + +![](https://gitee.com/fjj04/picture-bed/raw/master/img/20241208194022423.png) +23. **查询并转换类型** + 将字符串数组转换为整数数组。 + + ```csharp + string[] stringNumbers = { "1", "2", "3", "4" }; + int[] num23 = stringNumbers.Select(int.Parse).ToArray(); + Console.WriteLine("数组: " + string.Join(", ", num23)); + ``` + +![](https://gitee.com/fjj04/picture-bed/raw/master/img/20241208194323585.png) + +24. **查询并使用OfType过滤** + 从对象数组中过滤出字符串类型的元素。 + + ```csharp + object[] objects = { "String", 123, "Another String", 456 }; + var result = objects.OfType().ToList(); + foreach (var num24 in result) + { + Console.WriteLine(num24); + } + ``` + +![](https://gitee.com/fjj04/picture-bed/raw/master/img/20241208194613524.png) +##### 高级练习 + +25. **查询并使用Zip合并** + 合并两个数组,并创建一个包含元素对的新数组。 + + ```csharp + int[] numbers1 = { 1, 2, 3 }; + int[] numbers2 = { 4, 5, 6 }; + var num25 = numbers1.Zip(numbers2, (n1, n2) => new { n1, n2 }).ToList(); + foreach (var num in num25) + { + Console.WriteLine($"({num.n1}, {num.n2})"); + } + ``` + +![](https://gitee.com/fjj04/picture-bed/raw/master/img/20241208195117560.png) +26. **查询并使用Range生成** + 生成一个包含1到10的整数数组。 + + ```csharp + int[] num26=Enumerable.Range(1,10).ToArray(); + foreach (var item in num26) + { + Console.WriteLine(item); + } + ``` + +![](https://gitee.com/fjj04/picture-bed/raw/master/img/20241208195453841.png) +27. **查询并使用Repeat重复** + 重复一个元素多次,创建一个新数组。 + + ```csharp + int[] num27=Enumerable.Repeat(2,10).ToArray(); + foreach (var item in num27) + { + Console.WriteLine(item); + } + ``` + +![](https://gitee.com/fjj04/picture-bed/raw/master/img/20241208195711400.png) +28. **查询并使用Take限制数量** + 从数组中取出前5个元素。 + + ```csharp + int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; + int[] num28=numbers.Take(5).ToArray(); + foreach (var item in num28) + { + Console.WriteLine(item); + } + ``` + +![](https://gitee.com/fjj04/picture-bed/raw/master/img/20241208195931924.png) +29. **查询并使用Skip跳过元素** + 跳过数组中的前3个元素,然后取出剩余的元素。 + + ```csharp + int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; + int[] num29=numbers.Skip(3).ToArray(); + foreach (var item in num29) + { + Console.WriteLine(item); + } + ``` + +![](https://gitee.com/fjj04/picture-bed/raw/master/img/20241208200126295.png) diff --git "a/\345\221\250\351\231\210\345\256\271/20241112-MVC.md" "b/\345\221\250\351\231\210\345\256\271/20241112-MVC.md" new file mode 100644 index 0000000000000000000000000000000000000000..81d5e454a173a9c94ec22f1ca4b99c760825b3f9 --- /dev/null +++ "b/\345\221\250\351\231\210\345\256\271/20241112-MVC.md" @@ -0,0 +1,8 @@ +### 搭建静态网站 +``` +步骤: +1)安装nginx,命令:yum install -y ; +2)设置nginx开机启动和nginx现在启动,命令:systemctl enable nginx、systemctl start nginx +3)查看nginx,命令:systemctl status nginx(出现绿色的点就说明成功了) +4)在var下创建www文件,并在其下创建以域名为名称的文件夹,命令:mrdir/cd 域名 www +``` \ No newline at end of file diff --git "a/\345\221\250\351\231\210\345\256\271/20241114-MVC\346\246\202\345\277\265.md" "b/\345\221\250\351\231\210\345\256\271/20241114-MVC\346\246\202\345\277\265.md" new file mode 100644 index 0000000000000000000000000000000000000000..e7fa810f51b5f0b929a65cf0ee7b7ccbb79c6b95 --- /dev/null +++ "b/\345\221\250\351\231\210\345\256\271/20241114-MVC\346\246\202\345\277\265.md" @@ -0,0 +1,6 @@ +### 7 +``` +运行:dotnet run +保存运行:dotnet wacth +views:视图 +``` \ No newline at end of file diff --git "a/\345\221\250\351\231\210\345\256\271/20241114-\346\210\252\345\233\276.png" "b/\345\221\250\351\231\210\345\256\271/20241114-\346\210\252\345\233\276.png" new file mode 100644 index 0000000000000000000000000000000000000000..7ba0bbb8d0d3dad55969bd9acb1adc00d0e6064a Binary files /dev/null and "b/\345\221\250\351\231\210\345\256\271/20241114-\346\210\252\345\233\276.png" differ diff --git "a/\345\221\250\351\231\210\345\256\271/20241115-MVC1.md" "b/\345\221\250\351\231\210\345\256\271/20241115-MVC1.md" new file mode 100644 index 0000000000000000000000000000000000000000..f6fbba209fb5b6e63e0bdf1f04036342d5d3ca1c --- /dev/null +++ "b/\345\221\250\351\231\210\345\256\271/20241115-MVC1.md" @@ -0,0 +1,11 @@ +``` +创建项目:dotnet new mvc +项目名称:dotnet new mvc -o 项目名 +进入项目:cd 项目名 +运行项目:dotnet run +.net mvc项目中指定某页面不使用模板Layout.cshtml:@{Layout = "null"} //把引号里面的改成null +创建文件夹:mrdir 名字 +控制器:Controllers +views:视图(下要创建一个与控制器同名的) +暂停:Ctrl + C 运行:Ctrl + R +``` \ No newline at end of file diff --git "a/\346\254\247\351\230\263\344\271\276/1.PNG" "b/\346\254\247\351\230\263\344\271\276/1.PNG" new file mode 100644 index 0000000000000000000000000000000000000000..2283b2d4a6e753add1322797a90f7964ecdf3073 Binary files /dev/null and "b/\346\254\247\351\230\263\344\271\276/1.PNG" differ diff --git "a/\346\254\247\351\230\263\344\271\276/12.03.PNG" "b/\346\254\247\351\230\263\344\271\276/12.03.PNG" new file mode 100644 index 0000000000000000000000000000000000000000..f86a6b14598dc2a589285b40dcb78cb166daf724 Binary files /dev/null and "b/\346\254\247\351\230\263\344\271\276/12.03.PNG" differ diff --git "a/\346\254\247\351\230\263\344\271\276/2.PNG" "b/\346\254\247\351\230\263\344\271\276/2.PNG" new file mode 100644 index 0000000000000000000000000000000000000000..ed6157ad1e640fc56ae02d4fc5721426fea44418 Binary files /dev/null and "b/\346\254\247\351\230\263\344\271\276/2.PNG" differ diff --git "a/\346\254\247\351\230\263\344\271\276/20241114\347\254\224\350\256\260.md" "b/\346\254\247\351\230\263\344\271\276/20241114\347\254\224\350\256\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..e6916aa955956647f36d54d9c3efc02b3aeebcfd --- /dev/null +++ "b/\346\254\247\351\230\263\344\271\276/20241114\347\254\224\350\256\260.md" @@ -0,0 +1,70 @@ +## 创建MVC项目 + +### 1. 安装.NET SDK + +使用以下命令检查是否已安装: +```bash +dotnet --version +``` + +### 2. 创建一个新的 MVC 项目 + +```bash +dotnet new mvc -n 项目名称 +``` + + +### 3. 进入项目目录 +创建完成后,进入你的项目目录: + +```bash +cd MyMvcApp +``` + +### 4. 运行项目 +运行你的MVC项目,启动开发服务器: + +```bash +dotnet run +``` + +### 5. 项目结构 +创建的 MVC 项目会包含以下目录和文件: + +- **Controllers**:控制器类,负责处理用户的请求并返回响应。 + +- **Views**:视图文件,使用 Razor 语法来呈现 HTML 页面。 + +- **Models**:用于存放数据模型的类。 + +- **wwwroot**:包含静态文件,如 CSS、JavaScript 和图片。 + +- **appsettings.json**:应用程序的配置文件。 + +- **Program.cs**:配置和启动应用程序的入口点。 + +### 访问控制器和视图 + + +- ### 最基本的控制器结构 + + ```csharp + csharp复制代码using Microsoft.AspNetCore.Mvc; + + namespace MyMvcApp.Controllers + { + // 控制器类继承自 Controller 基类 + public class HomeController : Controller + { + // 最简单的操作方法,返回视图 + public IActionResult Index() + { + return View(); + } + } + } + ``` + + + + diff --git "a/\346\254\247\351\230\263\344\271\276/20241115\347\254\224\350\256\260.md" "b/\346\254\247\351\230\263\344\271\276/20241115\347\254\224\350\256\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..15c59e8607231c9e0c4b37acaa1c09bbb978242b --- /dev/null +++ "b/\346\254\247\351\230\263\344\271\276/20241115\347\254\224\350\256\260.md" @@ -0,0 +1,11 @@ +# 解决方案 +(创建语法 : dotnet new sln -n 解决方案名) +src文件夹(里面的子级文件统称项目) +mvc项目(一个 | 创建语法 : dotnet new mve -o mvc项目名) +类库(多个 | 创建语法 : dotnet new calsslib -o 类库名) + +# 解决方案与项目绑定 +语法:dotnet sln add 绑定项目的路径 + +# 启动 +启动:dotnet run 关闭:ctrl + c \ No newline at end of file diff --git "a/\346\254\247\351\230\263\344\271\276/20241119.png" "b/\346\254\247\351\230\263\344\271\276/20241119.png" new file mode 100644 index 0000000000000000000000000000000000000000..1fdb89132517009d8c81b0aea696906034ad7dbe Binary files /dev/null and "b/\346\254\247\351\230\263\344\271\276/20241119.png" differ diff --git "a/\346\254\247\351\230\263\344\271\276/20241119\347\254\224\350\256\260.md" "b/\346\254\247\351\230\263\344\271\276/20241119\347\254\224\350\256\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..341fc22ee59ec8796c2910dc819bd89b28912193 --- /dev/null +++ "b/\346\254\247\351\230\263\344\271\276/20241119\347\254\224\350\256\260.md" @@ -0,0 +1,21 @@ +# 登陆服务器 +1、ssh root@域名 +2、安装nginx apt install -y ninx +3、测试 systemctl status nginx +4、安装sdk +更新软件源 apt update +创建一个新的文件夹 +命令:mkdir [文件夹名] +查看当前目录下的文件和文件夹 +命令:ls +打包程序 +dotnet publish +配置 Nginx 反向代理 +server { + listen 80; + server_name 域名或者IP; + location / { + proxy_pass http://localhost:5000; + } +} +检查是否有语法错误:nginx -t 重新加载配置:nginx -s reload \ No newline at end of file diff --git "a/\346\254\247\351\230\263\344\271\276/20241121\347\254\224\350\256\260.md" "b/\346\254\247\351\230\263\344\271\276/20241121\347\254\224\350\256\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..83aef68840119588620db3d099947b3a572d1a1e --- /dev/null +++ "b/\346\254\247\351\230\263\344\271\276/20241121\347\254\224\350\256\260.md" @@ -0,0 +1,57 @@ +# 通过路由传递参数: +在控制器的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\254\247\351\230\263\344\271\276/20241122.1.png" "b/\346\254\247\351\230\263\344\271\276/20241122.1.png" new file mode 100644 index 0000000000000000000000000000000000000000..2b596e5c3aaf97d791e1048c50c1df1e39c1245b Binary files /dev/null and "b/\346\254\247\351\230\263\344\271\276/20241122.1.png" differ diff --git "a/\346\254\247\351\230\263\344\271\276/20241122.md" "b/\346\254\247\351\230\263\344\271\276/20241122.md" new file mode 100644 index 0000000000000000000000000000000000000000..33474b38eb6f4707336d46935a7172483dfd5313 --- /dev/null +++ "b/\346\254\247\351\230\263\344\271\276/20241122.md" @@ -0,0 +1,84 @@ +# 渲染复杂数据到页面 +模型 (Models/ComplexData.cs) +public class ComplexData +{ + public string Name { get; set; } + public int Age { get; set; } + public List Hobbies { get; set; } +} +控制器 (Controllers/HomeController.cs) +using System.Collections.Generic; +using System.Web.Mvc; +using YourNamespace.Models; + +public class HomeController : Controller +{ + public ActionResult ComplexData() + { + var model = new ComplexData + { + Name = "John Doe", + Age = 30, + Hobbies = new List { "Reading", "Traveling", "Swimming" } + }; + return View(model); + } +} +视图 (Views/Home/ComplexData.cshtml) +@model YourNamespace.Models.ComplexData + +

Name: @Model.Name

+

Age: @Model.Age

+

Hobbies:

+
    + @foreach (var hobby in Model.Hobbies) + { +
  • @hobby
  • + } +
+3. 渲染集合数据到页面 +模型 (Models/Item.cs) +public class Item +{ + public string Name { get; set; } + public double Price { get; set; } +} +控制器 (Controllers/HomeController.cs) +using System.Collections.Generic; +using System.Web.Mvc; +using YourNamespace.Models; + +public class HomeController : Controller +{ + public ActionResult CollectionData() + { + var items = new List + { + new Item { Name = "Apple", Price = 0.99 }, + new Item { Name = "Banana", Price = 0.59 }, + new Item { Name = "Cherry", Price = 2.99 } + }; + return View(items); + } +} +视图 (Views/Home/CollectionData.cshtml) +@model IEnumerable + +

Items

+ + + + + + + + + @foreach (var item in Model) + { + + + + + } + +
NamePrice
@item.Name$@item.Price
\ No newline at end of file diff --git "a/\346\254\247\351\230\263\344\271\276/20241122.png" "b/\346\254\247\351\230\263\344\271\276/20241122.png" new file mode 100644 index 0000000000000000000000000000000000000000..d380da22a1de38de15ad8366effbf570bcc3a446 Binary files /dev/null and "b/\346\254\247\351\230\263\344\271\276/20241122.png" differ diff --git "a/\346\254\247\351\230\263\344\271\276/20241122\345\237\272\347\241\200\350\203\275\345\212\233.md" "b/\346\254\247\351\230\263\344\271\276/20241122\345\237\272\347\241\200\350\203\275\345\212\233.md" new file mode 100644 index 0000000000000000000000000000000000000000..c36d5db86132518566221d0ed6ba9d587dad3a4b --- /dev/null +++ "b/\346\254\247\351\230\263\344\271\276/20241122\345\237\272\347\241\200\350\203\275\345\212\233.md" @@ -0,0 +1,53 @@ +# 生成一个随机整数,范围[0,100],注意是否包含 +``` +Random random = new Random(); +int randomNumberInclusive = random.Next(0, 101); +Console.WriteLine($"随机数(包含0和100):{randomNumberInclusive}"); +``` +# 生成一个随机整数,范围(0,100],注意是否包含 +``` +Random random = new Random(); +int randomNumberExclusive = random.Next(1, 101); +Console.WriteLine($"随机数(不包含0,包含100):{randomNumberExclusive}"); +``` +# 生成10个随机整数,范围[5,80],注意是否包含 +``` +Random random = new Random(); +List randomNumbers = new List(); +for (int i = 0; i < 10; i++) +{ + int randomNumber = random.Next(5, 81); + randomNumbers.Add(randomNumber); +} +Console.WriteLine("随机数列表(每个在[5, 80]范围内):"); +foreach (var num in randomNumbers) +{ + Console.WriteLine(num); +} +``` +# 定义一个字符串,字符串中有100个中文字符,需要从中随机取1个字符串 +``` +string chineseCharacters = "汉 字 列 表 示 例 子 随 机 生 成 的 一 百 个 汉 字 这 是 一 个 大 型 的 汉 字 集 合 体 系 列 所 有 的 汉 字 都 是 从 中 华 人 民 共 和 国 标 准 字 体 中 抽 取 的 每 一个 汉 字 都 是 独 特 的 不 可 替 换 的 这 些 汉 字 包 括 了 从 简 体 到 繁 体 的 各 种 形 式"; +Random random = new Random(); +char randomChar = chineseCharacters[random.Next(chineseCharacters.Length)]; +Console.WriteLine($"随机选取的字符:{randomChar}"); +``` + +# 定义一个字符串,字符串中有100个中文字符,需要从中随机取5-50个字符,组成新的字符 +``` +string chineseCharacters = "汉 字 列 表 示 例 子 随 机 生 成 的 一 百 个 汉 字 这 是 一 个 大 型 的 汉 字 集 合 体 系 列 所 有 的 汉 字 都 是 从 中 华 人 民 共 和 国 标 准 字 体 中 抽 取 的 每 一个 汉 字 都 是 独 特 的 不 可 替 换 的 这 些 汉 字 包 括 了 从 简 体 到 繁 体 的 各 种 形 式"; +Random random = new Random(); +int length = random.Next(5, 51); // 随机长度在5到50之间 +string randomSubstring = new string(chineseCharacters.OrderBy(x => random.Next()).Take(length).ToArray()); +Console.WriteLine($"随机选取的子字符串:{randomSubstring}"); +``` +# 定义2个字符串,第一个字符串中放百家姓,第二个字符串中放中文字符,要求从第一个字符串随机取得一个姓,再从第二个字符串中随机获得1到2个字符组成新字符串,和第一个字符串取得的姓组成一个姓名 +``` +string chineseCharacters = "汉 字 列 表 示 例 子 随 机 生 成 的 一 百 个 汉 字 这 是 一 个 大 型 的 汉 字 集 合 体 系 列 所 有 的 汉 字 都 是 从 中 华 人 民 共 和 国 标 准 字 体 中 抽 取 的 每 一个 汉 字 都 是 独 特 的 不 可 替 换 的 这 些 汉 字 包 括 了 从 简 体 到 繁 体 的 各 种 形 式"; +Random random = new Random(); +string surname = surnameString[random.Next(surnameString.Length)]; +int nameLength = random.Next(1, 3); // 随机长度在1到2之间 +string randomNamePart = new string(chineseCharacters.OrderBy(x => random.Next()).Take(nameLength).ToArray()); +string fullName = surname + randomNamePart; +Console.WriteLine($"随机生成的姓名:{fullName}"); +``` \ No newline at end of file diff --git "a/\346\254\247\351\230\263\344\271\276/20241122\347\254\224\350\256\260.md" "b/\346\254\247\351\230\263\344\271\276/20241122\347\254\224\350\256\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..eb69425f6ed05ce0ccd39615ba3629d64a792c6f --- /dev/null +++ "b/\346\254\247\351\230\263\344\271\276/20241122\347\254\224\350\256\260.md" @@ -0,0 +1,42 @@ +# 制器返回类型 +一般数据类型直接返回 如int、double、string、IEnumerable等数据类型 +IActionResult 一个接口,用于返回HTTP信息状态,如200、401、404等 +视图 +重定向 +ActionResult类型 将一般数据类型和HTTP状态信息混合使用 +特定于格式的操作结果:如JsonResult和ContentResult +POCO(普通旧CLR对象) +在ASP.NET Core MVC中,控制器的Action方法可以返回多种类型的值,以下是一些常见的返回类型: +IActionResult 或 ActionResult: +这是最常用的返回类型,允许你返回不同类型的HTTP响应。例如,可以返回ViewResult、RedirectResult、JsonResult等。 +``` +public IActionResult Index() +{ + return View(); +} +ViewResult: +返回一个视图,通常用于渲染HTML页面。 +``` +``` +public IActionResult Index() +{ + return View(); +} +``` +JsonResult: +返回一个包含JSON数据的HTTP响应。 +``` +public IActionResult GetJson() +{ + var data = new { Name = "张三" }; + return Json(data); +} +``` +ContentResult: +返回一个包含纯文本内容的HTTP响应 +``` +public IActionResult GetText() +{ + return Content("Hello, World!", "text/plain"); +} +``` \ No newline at end of file diff --git "a/\346\254\247\351\230\263\344\271\276/20241124205741.png" "b/\346\254\247\351\230\263\344\271\276/20241124205741.png" new file mode 100644 index 0000000000000000000000000000000000000000..3cdbc5f636ae69d932f97014845fed9c21975853 Binary files /dev/null and "b/\346\254\247\351\230\263\344\271\276/20241124205741.png" differ diff --git "a/\346\254\247\351\230\263\344\271\276/20241124205753.png" "b/\346\254\247\351\230\263\344\271\276/20241124205753.png" new file mode 100644 index 0000000000000000000000000000000000000000..915a0c5c146d57ea3a578edb63ef1a8d332d8c89 Binary files /dev/null and "b/\346\254\247\351\230\263\344\271\276/20241124205753.png" differ diff --git "a/\346\254\247\351\230\263\344\271\276/20241126\347\254\224\350\256\260.md" "b/\346\254\247\351\230\263\344\271\276/20241126\347\254\224\350\256\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..8aec23640951c84ccc91e6314be650bd596c67d2 --- /dev/null +++ "b/\346\254\247\351\230\263\344\271\276/20241126\347\254\224\350\256\260.md" @@ -0,0 +1,32 @@ +## 视图模型(ViewModel): + +专为视图设计的数据结构,用于在控制器与视图之间传递数据。 + +封装与特定视图相关的数据和逻辑,确保视图代码更易于理解和维护。 + +示例:创建包含文章和评论列表的视图模型来展示文章详情页面 + +## ViewData: + +ControllerBase的属性,类型为ViewDataDictionary,即字典结构。 + +用于在控制器向视图传递数据,以键值对形式存储。 + +数据生命周期在当前请求的视图渲染期间。 + + +控制器(Controller):充当模型和视图之间的中介。它接收来自用户的输入,更新模型的状态,并将更新的数据传递给视图进行显示。 +控制器传参 + +在ASP.NET Core MVC中,控制器通过接收用户请求来处理数据,并将处理结果传递给视图进行展示。控制器和视图之间的数据传递可以通过多种方式实现 +\ No newline at end of file + + +# 正向代理 +pc ————》 由于一些原因不能直接访问web服务器(例如:隐藏ip等原因) ——X——》 web服务器 +pc ——通过找一个——》 代理服务器 ——让代理服务器去访问——》 web服务器 + +# 反向代理 +pc ——X——》 隐藏的web服务器 +web服务器 ————》 设置一个 ————》 代理服务器 +pc端 ————》 访问 ————》 代理服务器(只能通过代理服务器去访问) ————》 访问 ————》 web服务器 \ No newline at end of file diff --git "a/\346\254\247\351\230\263\344\271\276/20241128.1.png" "b/\346\254\247\351\230\263\344\271\276/20241128.1.png" new file mode 100644 index 0000000000000000000000000000000000000000..ff791a72a176d10623fb7a1471a4f8e69bd55b06 Binary files /dev/null and "b/\346\254\247\351\230\263\344\271\276/20241128.1.png" differ diff --git "a/\346\254\247\351\230\263\344\271\276/20241128.2.png" "b/\346\254\247\351\230\263\344\271\276/20241128.2.png" new file mode 100644 index 0000000000000000000000000000000000000000..866760e5e1b6b5188758b363e3b91c38b6065ee0 Binary files /dev/null and "b/\346\254\247\351\230\263\344\271\276/20241128.2.png" differ diff --git "a/\346\254\247\351\230\263\344\271\276/20241128.3.png" "b/\346\254\247\351\230\263\344\271\276/20241128.3.png" new file mode 100644 index 0000000000000000000000000000000000000000..c5e8d9b408ecf239d3c85bc535af243ea293e0e4 Binary files /dev/null and "b/\346\254\247\351\230\263\344\271\276/20241128.3.png" differ diff --git "a/\346\254\247\351\230\263\344\271\276/20241128.4.png" "b/\346\254\247\351\230\263\344\271\276/20241128.4.png" new file mode 100644 index 0000000000000000000000000000000000000000..7077025989cb7344922443bbb9a66d8f0e4cfd4d Binary files /dev/null and "b/\346\254\247\351\230\263\344\271\276/20241128.4.png" differ diff --git "a/\346\254\247\351\230\263\344\271\276/20241128.png" "b/\346\254\247\351\230\263\344\271\276/20241128.png" new file mode 100644 index 0000000000000000000000000000000000000000..fa31dd7caf8287f4c07c3f57e0e19ad6d6ff1fc8 Binary files /dev/null and "b/\346\254\247\351\230\263\344\271\276/20241128.png" differ diff --git "a/\346\254\247\351\230\263\344\271\276/20241128\347\254\224\350\256\260.md" "b/\346\254\247\351\230\263\344\271\276/20241128\347\254\224\350\256\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..3d1660825eb5607021af25071eb40e3a52f920e0 --- /dev/null +++ "b/\346\254\247\351\230\263\344\271\276/20241128\347\254\224\350\256\260.md" @@ -0,0 +1,9 @@ +# 视图定义属性 +定义: @{属性(键值对)} 调用: @键 + +接受view +@model 命名空间,类名 #model. 键 + +# 定位点 + +
\ No newline at end of file diff --git "a/\346\254\247\351\230\263\344\271\276/20241205linq\347\273\203\344\271\240.md" "b/\346\254\247\351\230\263\344\271\276/20241205linq\347\273\203\344\271\240.md" new file mode 100644 index 0000000000000000000000000000000000000000..443e282aa1a60bd38ce686190d00d6051c58a552 --- /dev/null +++ "b/\346\254\247\351\230\263\344\271\276/20241205linq\347\273\203\344\271\240.md" @@ -0,0 +1,284 @@ +# 基础练习 +1.查询特定元素 找出数组中等于5的元素。 + +int[] numbers = { 1, 2, 3, 4, 5, 6 }; +```c# + var result = numbers.Where(n => n == 5).ToArray(); + + Console.WriteLine("等于5的元素:"); + foreach (var number in result) + { + Console.WriteLine(number); + } +``` +2.查询特定范围的元素 找出数组中在2到8之间的元素。 + +int[] numbers = { 1, 2, 3, 4, 5, 6 }; +```c# +var result = numbers.Where(n => n >= 2 && n <= 8).ToArray(); + +``` +3.查询并转换元素 将数组中的每个数字乘以2。 + +int[] numbers = { 1, 2, 3, 4, 5, 6 }; +```c# + var result = numbers.Select(n => n * 2).ToArray(); +``` +4.查询特定属性的对象 找出所有名字以"王"开头的学生。 + +List students = new List +{ + new Student {Id=1, Name = "王有才", Age = 21 }, + new Student {Id=2, Name = "王中王", Age = 22 }, + new Student {Id=3, Name = "张语嫣", Age = 23 }, + new Student {Id=4, Name = "詹宇航", Age = 35 }, + new Student {Id=5, Name = "郑雨良", Age = 26 }, +}; +```c# +var result = students.Where(s => s.Name.StartsWith("王")).ToList(); +``` +5.查询并排序 找出所有年龄大于20岁的学生,并按年龄降序排列。 + + List students = new List +{ + new Student {Id=1, Name = "王有才", Age = 21 }, + new Student {Id=2, Name = "罗婷", Age = 21 }, + new Student {Id=3, Name = "王中王", Age = 22 }, + new Student {Id=4, Name = "李子柒", Age = 22 }, + new Student {Id=5, Name = "张语嫣", Age = 23 }, + new Student {Id=6, Name = "詹宇航", Age = 35 }, + new Student {Id=7, Name = "郑雨良", Age = 26 }, + new Student {Id=8, Name = "欧文", Age = 26 }, +}; +```c# + var result = students.Where(s => s.Age > 20) + .OrderByDescending(s => s.Age) + .ToList(); +``` +6.查询并去重 找出数组中所有不重复的数字。 + +int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; +```c# + var distinctNumbers = numbers.Distinct().ToArray(); +``` +7.查询第一个元素 找出数组中第一个大于3的元素。 + +int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; +```c# + var firstGreaterThanThree = numbers.FirstOrDefault(n => n > 3); +``` +8.查询最后一个元素 找出数组中最后一个小于7的元素。 + +int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; +```c# + var lastLessThanSeven = numbers.LastOrDefault(n => n < 7); +``` +9.查询元素是否存在 检查数组中是否存在大于10的元素。 + +int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; +```c# + bool existsGreaterThanTen = numbers.Any(n => n > 10); +``` +10.查询元素的计数 计算数组中大于5的元素数量。 + +int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; +```c# +int countGreaterThanFive = numbers.Count(n => n > 5); +``` +11.查询元素的总和 计算数组中所有元素的总和。 + +int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; +```c# + int sum = numbers.Sum(); +``` +12.查询元素的最大值 找出数组中的最大值。 + +int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; +```c# +int maxValue = numbers.Max(); +``` +13.查询元素的最小值 找出数组中的最小值。 + +int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; +```c# +int minValue = numbers.Min(); +``` +14.查询元素的平均值 计算数组中所有元素的平均值。 + +int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; +```c# + double average = numbers.Average(); +``` +15.查询特定条件的元素 找出数组中能被3整除的元素。 + +int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; +```c# + var divisibleByThree = numbers.Where(n => n % 3 == 0).ToArray(); +``` +# 中级练习 +16.查询并选择特定属性 找出所有学生的姓名和年龄。 + +List students = new List +{ + new Student {Id=1, Name = "王有才", Age = 21 }, + new Student {Id=2, Name = "罗婷", Age = 21 }, + new Student {Id=3, Name = "王中王", Age = 22 }, + new Student {Id=4, Name = "李子柒", Age = 22 }, + new Student {Id=5, Name = "张语嫣", Age = 23 }, + new Student {Id=6, Name = "詹宇航", Age = 35 }, + new Student {Id=7, Name = "郑雨良", Age = 26 }, + new Student {Id=8, Name = "欧文", Age = 26 }, +}; +```c# +var result = students.Select(s => new { s.Name, s.Age }).ToList(); + foreach (var student in result) + { + Console.WriteLine($"姓名: {student.Name}, 年龄: {student.Age}"); + } +``` +17.查询并分组 按年龄分组学生,并计算每个年龄组的学生数量。 + +List students = new List +{ + new Student {Id=1, Name = "王有才", Age = 21 }, + new Student {Id=2, Name = "罗婷", Age = 21 }, + new Student {Id=3, Name = "王中王", Age = 22 }, + new Student {Id=4, Name = "李子柒", Age = 22 }, + new Student {Id=5, Name = "张语嫣", Age = 23 }, + new Student {Id=6, Name = "詹宇航", Age = 35 }, + new Student {Id=7, Name = "郑雨良", Age = 26 }, + new Student {Id=8, Name = "欧文", Age = 26 }, +}; +```c# +var groupedStudents = students.GroupBy(s => s.Age) + .Select(g => new { Age = g.Key, Count = g.Count() }) + .ToList(); +``` +18.查询并联结 联结学生和课程表,找出每个学生的所有课程。 + +List students = new List +{ + new Student {Id=1, Name = "王有才", Age = 21 }, + new Student {Id=2, Name = "罗婷", Age = 21 }, + new Student {Id=3, Name = "王中王", Age = 22 }, + new Student {Id=4, Name = "李子柒", Age = 22 }, + new Student {Id=5, Name = "张语嫣", Age = 23 }, + new Student {Id=6, Name = "詹宇航", Age = 35 }, + new Student {Id=7, Name = "郑雨良", Age = 26 }, + new Student {Id=8, Name = "欧文", Age = 26 }, +}; +List courses=new List +{ + new Course{StudentId=1,CourseName="英语"}, + new Course{StudentId=1,CourseName="数学"}, + new Course{StudentId=2,CourseName="语文"}, + new Course{StudentId=3,CourseName="物理"}, + new Course{StudentId=4,CourseName="化学"}, + new Course{StudentId=4,CourseName="生物"}, + new Course{StudentId=4,CourseName="语文"}, +}; +```c# +// 联结学生和课程 + var studentCourses = from student in students + join course in courses on student.Id equals course.StudentId into courseGroup + select new + { + StudentName = student.Name, + Courses = courseGroup.Select(c => c.CourseName).ToList() + }; + + // 输出结果 + foreach (var sc in studentCourses) + { + Console.WriteLine($"学生: {sc.StudentName}, 课程: {string.Join(", ", sc.Courses)}"); + } +``` +19.查询并反转 反转数组中的元素顺序。 + +int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; +```c# +var reversedNumbers = numbers.Reverse().ToArray(); +``` +20.查询并填充 找出数组中第一个大于2的元素,并用它填充后面的所有位置。 + +int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; +```c# +// 找到第一个大于2的元素 + int? firstGreaterThanTwo = numbers.FirstOrDefault(n => n > 2); + + // 用找到的元素填充后面的所有位置 + for (int i = 0; i < numbers.Length; i++) + { + if (firstGreaterThanTwo.HasValue && i >= Array.IndexOf(numbers, firstGreaterThanTwo)) + { + numbers[i] = firstGreaterThanTwo.Value; + } + } + + Console.WriteLine("填充后的数组:"); + Console.WriteLine(string.Join(", ", numbers)); +``` +21.查询并排除 从数组中排除所有小于5的元素。 + +int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; +```c# + var filteredNumbers = numbers.Where(n => n >= 5).ToArray(); + + Console.WriteLine("排除小于5的元素后的数组:"); + Console.WriteLine(string.Join(", ", filteredNumbers)); +``` +22.查询并填充默认值 如果数组中存在null值,用默认值0替换。 + +int?[] nullableNumbers = { 1, null, 3, null, 5 }; +```c# + var filledNumbers = nullableNumbers.Select(n => n ?? 0).ToArray(); +``` +23.查询并转换类型 将字符串数组转换为整数数组。 + +string[] stringNumbers = { "1", "2", "3", "4" }; +```c# + int[] intNumbers = stringNumbers.Select(int.Parse).ToArray(); +``` +24.查询并使用OfType过滤 从对象数组中过滤出字符串类型的元素。 + +object[] objects = { "String", 123, "Another String", 456 }; +var result = objects.OfType().ToList(); +```c# +var result = objects.OfType().ToList(); +``` +# 高级练习 +25.查询并使用Zip合并 合并两个数组,并创建一个包含元素对的新数组。 + +int[] numbers1 = { 1, 2, 3 }; +int[] numbers2 = { 4, 5, 6 }; +```c# +// 使用 Zip 方法合并两个数组 + var zipped = numbers1.Zip(numbers2, (n1, n2) => new { n1, n2 }).ToArray(); + + // 输出合并后的数组 + Console.WriteLine("合并后的数组:"); + foreach (var pair in zipped) + { + Console.WriteLine($"({pair.n1}, {pair.n2})"); + } +``` +26.查询并使用Range生成 生成一个包含1到10的整数数组。 +```c# +int[] numbers = Enumerable.Range(1,10).ToArray(); +``` +27.查询并使用Repeat重复 重复一个元素多次,创建一个新数组。 +```c# +int[] numbers = Enumerable.Repeat(1,10).ToArray(); +``` +28.查询并使用Take限制数量 从数组中取出前5个元素。 + +int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 }; +```c# +var takenNumbers = numbers.Take(5).ToArray(); +``` +29.查询并使用Skip跳过元素 跳过数组中的前3个元素,然后取出剩余的元素。 + +int[] numbers = { 1, 2, 3, 4, 5, 6,18,23,64,7,18,2,3 } +```c# + var skippedNumbers = numbers.Skip(3).ToArray(); +``` \ No newline at end of file diff --git "a/\346\254\247\351\230\263\344\271\276/20241205\347\254\224\350\256\260.md" "b/\346\254\247\351\230\263\344\271\276/20241205\347\254\224\350\256\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..1517f288bc09fe8a4c8b80a5172380421a075ef7 --- /dev/null +++ "b/\346\254\247\351\230\263\344\271\276/20241205\347\254\224\350\256\260.md" @@ -0,0 +1,14 @@ +## 表单 +基本表单结构: +``` + + + +``` +控制器: +在该方法名前面加 `[HttpPost]` +该方法参数为 `(类型 变量名)` + +删除写一个新的方法 +按钮`` +进行删除然后返回首页 \ No newline at end of file diff --git "a/\346\254\247\351\230\263\344\271\276/3.PNG" "b/\346\254\247\351\230\263\344\271\276/3.PNG" new file mode 100644 index 0000000000000000000000000000000000000000..de48dade52758b3b572b59c82b11f76e9f74fdbc Binary files /dev/null and "b/\346\254\247\351\230\263\344\271\276/3.PNG" differ diff --git "a/\346\254\247\351\230\263\344\271\276/4.PNG" "b/\346\254\247\351\230\263\344\271\276/4.PNG" new file mode 100644 index 0000000000000000000000000000000000000000..ef340072ab427c5db0fa66889cbdbc40b077b390 Binary files /dev/null and "b/\346\254\247\351\230\263\344\271\276/4.PNG" differ diff --git "a/\346\254\247\351\230\263\344\271\276/5.PNG" "b/\346\254\247\351\230\263\344\271\276/5.PNG" new file mode 100644 index 0000000000000000000000000000000000000000..1d526fcd7b7ad7737919578ac94a6383553b5151 Binary files /dev/null and "b/\346\254\247\351\230\263\344\271\276/5.PNG" differ diff --git "a/\346\254\247\351\230\263\344\271\276/6.PNG" "b/\346\254\247\351\230\263\344\271\276/6.PNG" new file mode 100644 index 0000000000000000000000000000000000000000..2fc1f875ccc65106b2b2df94b60283f0aadc6c29 Binary files /dev/null and "b/\346\254\247\351\230\263\344\271\276/6.PNG" differ diff --git "a/\346\254\247\351\230\263\344\271\276/linux.gif" "b/\346\254\247\351\230\263\344\271\276/linux.gif" new file mode 100644 index 0000000000000000000000000000000000000000..db48a3b4f540a22f447b3fed9e061ba9cd608e1d Binary files /dev/null and "b/\346\254\247\351\230\263\344\271\276/linux.gif" differ diff --git "a/\346\254\247\351\230\263\344\271\276/linux1.gif" "b/\346\254\247\351\230\263\344\271\276/linux1.gif" new file mode 100644 index 0000000000000000000000000000000000000000..2cc358e1b60a7b30d77f97884b07a58e67fa9410 Binary files /dev/null and "b/\346\254\247\351\230\263\344\271\276/linux1.gif" differ diff --git "a/\346\254\247\351\230\263\344\271\276/\344\275\234\344\270\232\346\225\210\346\236\234\345\233\276.png" "b/\346\254\247\351\230\263\344\271\276/\344\275\234\344\270\232\346\225\210\346\236\234\345\233\276.png" new file mode 100644 index 0000000000000000000000000000000000000000..f2bab92e086336e325311a8cd0213bc65e6d19ac Binary files /dev/null and "b/\346\254\247\351\230\263\344\271\276/\344\275\234\344\270\232\346\225\210\346\236\234\345\233\276.png" differ diff --git "a/\346\254\247\351\230\263\344\271\276/\345\210\240\351\231\244.PNG" "b/\346\254\247\351\230\263\344\271\276/\345\210\240\351\231\244.PNG" new file mode 100644 index 0000000000000000000000000000000000000000..aa6e4f9568774019f28442ac73142b433a87ddcf Binary files /dev/null and "b/\346\254\247\351\230\263\344\271\276/\345\210\240\351\231\244.PNG" differ diff --git "a/\346\254\247\351\230\263\344\271\276/\346\226\260\345\242\236.PNG" "b/\346\254\247\351\230\263\344\271\276/\346\226\260\345\242\236.PNG" new file mode 100644 index 0000000000000000000000000000000000000000..22ed2f173c666dbc51984ab75d6b1c729b741eb1 Binary files /dev/null and "b/\346\254\247\351\230\263\344\271\276/\346\226\260\345\242\236.PNG" differ diff --git "a/\351\222\237\345\230\211\345\246\256/20241114-MVC\345\237\272\347\241\200.md" "b/\351\222\237\345\230\211\345\246\256/20241114-MVC\345\237\272\347\241\200.md" new file mode 100644 index 0000000000000000000000000000000000000000..9c82a1ae24a7d5b3a69480459b1e944d02d4fa8f --- /dev/null +++ "b/\351\222\237\345\230\211\345\246\256/20241114-MVC\345\237\272\347\241\200.md" @@ -0,0 +1,9 @@ +# 结构 + * dotnet new sln -n 解决方案名 + * dotnet new mve -o mvc项目名 + * dotnet new calsslib -o 类库名 + * dotnet sln add 绑定项目的路径 + + +# 作业 +![alt text](image.png) diff --git "a/\351\222\237\345\230\211\345\246\256/image.png" "b/\351\222\237\345\230\211\345\246\256/image.png" new file mode 100644 index 0000000000000000000000000000000000000000..b17dd1c19d245de73c3e457c4025aedf72ad928f Binary files /dev/null and "b/\351\222\237\345\230\211\345\246\256/image.png" differ diff --git "a/\351\227\253\345\220\211\347\245\245/20241114-\346\226\207\344\273\266\347\273\223\346\236\204.md" "b/\351\227\253\345\220\211\347\245\245/20241114-\346\226\207\344\273\266\347\273\223\346\236\204.md" new file mode 100644 index 0000000000000000000000000000000000000000..93f7d6fff7c84d053ffc113afc9aef5e4de243c2 --- /dev/null +++ "b/\351\227\253\345\220\211\347\245\245/20241114-\346\226\207\344\273\266\347\273\223\346\236\204.md" @@ -0,0 +1,29 @@ +### 基本结构 +``` +文件夹 +解决方案(创建语法 : dotnet new sln -n 解决方案名) +src文件夹(里面的子级文件统称项目) +mvc项目(一个 | 创建语法 : dotnet new mve -o mvc项目名) +类库(多个 | 创建语法 : dotnet new calsslib -o 类库名) +项目绑定 +dotnet sln add 绑定项目的路径 +``` +### 网站搭建 +1.ping 域名 + +2.ssh root@域名 输入密码 + +3.vim index.html + +4.cat index.html + +5.cd /etc/nginxx/conf.d/ + +6.vim 域名.conf + +### views引用wwwroot内的文件 +``` +~/文件夹(例如:css)/文件 +``` + + diff --git "a/\351\231\210\345\207\257\347\220\233/image.png" "b/\351\231\210\345\207\257\347\220\233/image.png" new file mode 100644 index 0000000000000000000000000000000000000000..ce07cc42421229d9e02f1787092a11c1c5463d8a Binary files /dev/null and "b/\351\231\210\345\207\257\347\220\233/image.png" differ