From ce717ff3b7612b270229a57d1ecd7890f3cc5e42 Mon Sep 17 00:00:00 2001 From: Your Name Date: Tue, 26 Nov 2024 23:29:35 +0800 Subject: [PATCH] =?UTF-8?q?action=E8=BF=94=E5=9B=9E=E5=80=BC=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...347\275\262MVC\350\257\246\350\247\243.md" | 99 +++++++++++++++++++ ...66\345\231\250\344\274\240\345\217\202.md" | 79 ++++++++++++++- ...36\345\200\274\347\261\273\345\236\213.md" | 58 +++++++++++ ...347\275\262MVC\351\241\271\347\233\256.md" | 11 --- 4 files changed, 231 insertions(+), 16 deletions(-) create mode 100644 "\345\220\264\351\221\253\351\270\277/20241120\351\203\250\347\275\262MVC\350\257\246\350\247\243.md" rename "\345\220\264\351\221\253\351\270\277/20241122\346\216\247\345\210\266\345\231\250.md" => "\345\220\264\351\221\253\351\270\277/20241122\346\216\247\345\210\266\345\231\250\344\274\240\345\217\202.md" (62%) create mode 100644 "\345\220\264\351\221\253\351\270\277/20241125action\350\277\224\345\233\236\345\200\274\347\261\273\345\236\213.md" delete mode 100644 "\345\220\264\351\221\253\351\270\277/2024118\345\234\250Linux\344\270\212\351\203\250\347\275\262MVC\351\241\271\347\233\256.md" diff --git "a/\345\220\264\351\221\253\351\270\277/20241120\351\203\250\347\275\262MVC\350\257\246\350\247\243.md" "b/\345\220\264\351\221\253\351\270\277/20241120\351\203\250\347\275\262MVC\350\257\246\350\247\243.md" new file mode 100644 index 0000000..3908847 --- /dev/null +++ "b/\345\220\264\351\221\253\351\270\277/20241120\351\203\250\347\275\262MVC\350\257\246\350\247\243.md" @@ -0,0 +1,99 @@ +## Debian部署MVC(Asp.Net Core)的先决条件 +1. 在服务器上安装了运行环境或者是调试环境(必要条件) + 1. 如何安装SDK包管理器 + - 先下载个文件 wget curl + - 注册文件 + - 删除已经注册过的文件 rm + - 更新软件源 apt update + - 安装sdk apt install dotnet-sdk-8.0 + 2. 在Linux上安装软件或者应用常营方式如下: + 1. 包管理器(相对于用户来说最简单) + 2. 使用二进制文件安装 + 3. 编译安装 +2. 将打包好的程序上传到指定目录(必要条件) + 1.scp工具 + +MVC练习: + +2.创建一个控制项目,项目名称Blog +``` +dotnet new mvc -n Blog +``` +3.创建一个控制台项目,输出到Blog目录 +``` +dotnet new mvc -o Blog +``` +4.创建一个MVC项目,指定项目名称 +``` +dotnet new mvc -n 指定项目名称 +``` +5.创建一个MVC项目,指定输出目录 +``` +dotnet new mvc -o 指定输出目录 +``` +6.创建一个带解决方案,其下有一个MVC项目,3个类库项目的“综合项目” +``` + +``` +7.创建一个项目,在默认控制器(Home)下,新增一个Action方法,名为Ok,同时为其创建对应视图以显示这个视图 +``` +public IActionResult Ok() +{ + return View(); +} +在View文件夹创建Ok.cshtml文件显示视图 +``` +8.创建一个项目,创建一个新的控制器,名为Blogs,新的控制器拥有一个名为Index的Action,该方法返回一个视图,视图显示“神级预判” +``` +在Controllers文件夹创建BlogsController.cs文件 +public IActionResult Index(){ + return View(); +} +在View文件夹创建Index.cshtml文件,填入"神级预判" +``` +9.给第8题的新控制,添加一个新的Action,名为Music,不接受任何参数,并返回对应的视图,视图显示“顶级打野” +``` +public IActionResult Music(){ + return View(); +} +在View文件夹创建Music.cshtml文件,填入"顶级打野" +``` +10.给第8题的新控制器,新增一个Action,名为List,不接受任何参数,并返回对应视图,视图显示一个经典CRUD界面 +``` +public IActionResult List() +{ + return View(); +} + +在View文件夹创建"List.cshtml"文件 +``` +11.新增一个控制器,名为Products,该控制器具有一个名为Edit的Action,这个Action接受一个int类型的参数id,显示这个id +``` +在Controllers文件夹中创建文件ProductsController.cs + +public IActionResult Edit(int id) +{ + return Content(id.ToString());; +} +``` +12.在11题的新控制器中,新增一个名为Create的Action,该Action接受一个类型为Students(有姓名、年龄、体长属性)的参数,并展示该参数的姓名属性 +``` +public IActionResult Create(Student id){ + var student=new Student(){ + Name="老吴", + Age="19", + Height="175" + }; + return View(student) +} +public class Student{ + public string Name{get;set;}=null!; + public string Age{get;set;}=null!; + public string Height{get;set;}=null!; +} +在View文件夹创建"List.cshtml"文件,填入: +@model Blog.Controllers.Student +@Model.Name +@Model.Age +@Model.Height +``` \ No newline at end of file diff --git "a/\345\220\264\351\221\253\351\270\277/20241122\346\216\247\345\210\266\345\231\250.md" "b/\345\220\264\351\221\253\351\270\277/20241122\346\216\247\345\210\266\345\231\250\344\274\240\345\217\202.md" similarity index 62% rename from "\345\220\264\351\221\253\351\270\277/20241122\346\216\247\345\210\266\345\231\250.md" rename to "\345\220\264\351\221\253\351\270\277/20241122\346\216\247\345\210\266\345\231\250\344\274\240\345\217\202.md" index f1fb5a1..fff5800 100644 --- "a/\345\220\264\351\221\253\351\270\277/20241122\346\216\247\345\210\266\345\231\250.md" +++ "b/\345\220\264\351\221\253\351\270\277/20241122\346\216\247\345\210\266\345\231\250\344\274\240\345\217\202.md" @@ -26,10 +26,6 @@ - **学习曲线**:对于新手开发者来说,MVC架构可能需要一定的学习曲线来理解各个组件如何协同工作。 - **复杂性**:在大型项目中,管理多个模型、视图和控制器之间的关系可能会变得困难,增加了项目的复杂性。 -# Linux练习 -1. 使用以下几种方式分别登录服务器,说明它们分别的注意事项,并说明它们之间的区别 - -答: **ssh** SSH是一种网络协议,用于加密方式远程登录到服务器。 @@ -62,4 +58,77 @@ XShell 是一个基于 Web 的 SSH 客户端,允许你通过浏览器远程管 通常通过 SSH 客户端内置的 PuTTY 功能来连接。 需要服务器的 SSH 服务支持。 区别: -PuTTY 通常作为 SSH 客户端的一部分,而不是独立工具。 \ No newline at end of file +PuTTY 通常作为 SSH 客户端的一部分,而不是独立工具。 + +专项练习: +1.简单参数传递 在一个叫Blog控制器中,定义一个叫Index的Action,并且传递一个int类型的值,id为变量名 +``` +public IActionResult Index(int id){ + return Content(id); +} +``` +2.简单参数传递 在一个叫Blog控制器中,定义一个叫Index_2的Action,并且传递一个string类型的值,id为变量名 +``` +public IActionResult Index_2(string id){ + return Content(id); +} +``` +3.简单参数传递 在一个叫Blog控制器中,定义一个叫Index_3的Action,并且传递一个string类型的值,name为变量名 +``` +public IActionResult Index(string name){ + return Content(name); +} +``` +4.复杂参数传递 在一个叫Blog的控制器中,定义一个名为Create的Action,并且传递一个BlogCreateDto类型的值,blogCreateDto为变量名 + +PS BlogCreateDto类型具有Title、Author、Content自动属性 +``` +[HttpPost] +public IActionResult Create([FromBody] BlogCreateDto blogCreateDto) +{ + return Content(JsonSerializer.Serialize(blogCreateDto)); +} + +public class BlogCreateDto +{ + public string Title{get;set;} = null!; + public string Aothor{get;set;} = null!; + public string Content{get;set;} = null!; +} +``` +5.复杂参数传递 在一个叫Blog的控制器中,定义一个名为Create_1的Action,并且传递一个Products类型的值,productCreateDto为变量名 + +PS Products类型具有Name、Price、Stock自动属性 +``` +复杂参数传递 在一个叫Blog的控制器中,定义一个名为Create_1的Action,并且传递一个Products类型的值,productCreateDto为变量名 + +[HttpPost] +public IActionResult Create_1([FromBody] Products productCreateDto) +{ + return Content(JsonSerializer.Serialize(productCreateDto)); +} + +public class Products +{ + public string Name{get;set;} = null!; + public int Price{get;set;} = null!; + public string Stock{get;set;} = null!; +} +``` +6.复杂参数传递 在一个叫Blog的控制器中,定义一个名为Create_2的Action,并且传递一个Students类型的值,studentCreateDto为变量名 + +PS Students类型具有StudentName、Sex、Age自动属性 +``` +[HttpPost] +public IActionResult Create_2([FromBody] Students studentCreateDto) +{ + return Content(JsonSerializer.Serialize(studentCreateDto)); +} + +public class Students +{ + public string StudentName{get;set;} = null!; + public string Sex{get;set;} = null!; + public int Age{get;set;} = null!; +} +``` \ No newline at end of file diff --git "a/\345\220\264\351\221\253\351\270\277/20241125action\350\277\224\345\233\236\345\200\274\347\261\273\345\236\213.md" "b/\345\220\264\351\221\253\351\270\277/20241125action\350\277\224\345\233\236\345\200\274\347\261\273\345\236\213.md" new file mode 100644 index 0000000..df052af --- /dev/null +++ "b/\345\220\264\351\221\253\351\270\277/20241125action\350\277\224\345\233\236\345\200\274\347\261\273\345\236\213.md" @@ -0,0 +1,58 @@ +# Action的返回值类型 +- 定义:action是指被public修饰的修饰符 +- 返回常见数据类型,如int,string,IList<> +- IActionResult,返回相应状态码 + - 200--响应成功 + - 301--请求的资源已经被永久地移动到了一个新的位置,并且任何未来的引用都应该使用返回的URI + - 401 404--资源是否找到问题 + - 500--请求没问题,服务器内部逻辑问题 + - a.视图 + - b.重定向--RedirectToAction +- ActionResult<>,可以用时返回状态码和常规数据类型 +- JsonResult、ContentResult,返回的响应就是纯粹的数据 +- Poco 可以返回一个对象,而这个对象在被返回时会被序列化(相对应的是,反序列化)--序列化是将对象的状态信息转换为可以存储或传输的形式的过程 + +专项练习-基础能力: +1.public IActionResult Index1(){ + Random rand=new Random(); + int Number=rand.Next(0,101); + return View(Number); + } +屏幕截图 2024-11-26 230556.png +2.public IActionResult Index2(){ + Random rand=new Random(); + int Number=rand.Next(1,101); + return View(Number); + } +屏幕截图 2024-11-26 230635.png +3.public IActionResult Index3(){ + Random rand=new Random(); + Listnumber=new List(); + for (int i = 0; i < 10; i++) + { + int Number=rand.Next(5,81); + number.Add(Number); + }; + return View(number); + } +屏幕截图 2024-11-26 230805.png +4.public IActionResult Index4(){ + string str="壬戌之秋,七月既望,苏子与客泛舟游于赤壁之下。清风徐来,水波不兴。举酒属客,诵明月之诗,歌窈窕之章。少焉,月出于东山之上,徘徊于斗牛之间。白露横江,水光接天。纵一苇之所如,凌万顷之茫然。浩浩乎如冯虚御风,而不知其所止;飘飘乎如遗世独立,羽化而登仙。"; + Random rand=new Random(); + char zfc=str[rand.Next(str.Length)]; + return View(zfc); + } +屏幕截图 2024-11-26 230828.png +5. public IActionResult Index5(){ + string str="壬戌之秋,七月既望,苏子与客泛舟游于赤壁之下。清风徐来,水波不兴。举酒属客,诵明月之诗,歌窈窕之章。少焉,月出于东山之上,徘徊于斗牛之间。白露横江,水光接天。纵一苇之所如,凌万顷之茫然。浩浩乎如冯虚御风,而不知其所止;飘飘乎如遗世独立,羽化而登仙。"; + Random rand=new Random(); + int length=rand.Next(5,51); + string newStr=""; + for (int i = 0; i < length; i++) + { + int index=rand.Next(str.Length); + newStr+=str[index]; + } + return View(newStr); + } +屏幕截图 2024-11-26 230851.png \ No newline at end of file diff --git "a/\345\220\264\351\221\253\351\270\277/2024118\345\234\250Linux\344\270\212\351\203\250\347\275\262MVC\351\241\271\347\233\256.md" "b/\345\220\264\351\221\253\351\270\277/2024118\345\234\250Linux\344\270\212\351\203\250\347\275\262MVC\351\241\271\347\233\256.md" deleted file mode 100644 index e102f3f..0000000 --- "a/\345\220\264\351\221\253\351\270\277/2024118\345\234\250Linux\344\270\212\351\203\250\347\275\262MVC\351\241\271\347\233\256.md" +++ /dev/null @@ -1,11 +0,0 @@ -@startmindmap - * 1 项目组织结构 - * 解决方案和项目的架构 - * mvc项目的结构解读 - - * 2 在Linux上部署MVC项目 - * 创建模板ASP.Net Core Web 应用 - * 在控制器和视图中写入相应文件 - * 安装sdk运行环境 - * 打包上传程序 -@endmindmap \ No newline at end of file -- Gitee