From 1bbdefc3e4d43e7a9da9729e4f7114e88ee1f9ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E7=81=BF?= <2262917336@qq.com> Date: Sun, 24 Nov 2024 21:29:59 +0800 Subject: [PATCH] 20241122 --- ...347\275\262MVC\350\257\246\350\247\243.md" | 127 +++++++++++++++++ ...66\345\231\250\344\274\240\345\217\202.md" | 130 ++++++++++++++++++ 2 files changed, 257 insertions(+) create mode 100644 "\345\210\230\347\201\277/20241122-\346\216\247\345\210\266\345\231\250\344\274\240\345\217\202.md" diff --git "a/\345\210\230\347\201\277/20241120-\351\203\250\347\275\262MVC\350\257\246\350\247\243.md" "b/\345\210\230\347\201\277/20241120-\351\203\250\347\275\262MVC\350\257\246\350\247\243.md" index c859bba..9337e56 100644 --- "a/\345\210\230\347\201\277/20241120-\351\203\250\347\275\262MVC\350\257\246\350\247\243.md" +++ "b/\345\210\230\347\201\277/20241120-\351\203\250\347\275\262MVC\350\257\246\350\247\243.md" @@ -43,3 +43,130 @@ ``` - 检查是否有语法错误:nginx -t - 重新加载配置:nginx -s reload + + +## 部署10个静态网站 +- t1.lcann.cn +- t2.lcann.cn +- t3.lcann.cn +- t4.lcann.cn +- t5.lcann.cn +- t6.lcann.cn +- t7.lcann.cn +- t8.lcann.cn +- t9.lcann.cn +- t10.lcann.cn + +## 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 = "18", + Weight = "60kg", + Height = "180cm" + }; + return View(student); +} + +新增类 +public class Student +{ + public string Name{get;set;}=null!; + public string Age{get;set;}=null!; + public string Weight{get;set;}=null!; + public string Height{get;set;}=null!; +} + +在View文件夹中,创建文件`List.cshtml`,填入一下内容: +@model Blog.Controllers.Student; +@Model.Name +``` \ No newline at end of file diff --git "a/\345\210\230\347\201\277/20241122-\346\216\247\345\210\266\345\231\250\344\274\240\345\217\202.md" "b/\345\210\230\347\201\277/20241122-\346\216\247\345\210\266\345\231\250\344\274\240\345\217\202.md" new file mode 100644 index 0000000..444a77c --- /dev/null +++ "b/\345\210\230\347\201\277/20241122-\346\216\247\345\210\266\345\231\250\344\274\240\345\217\202.md" @@ -0,0 +1,130 @@ +## 方法重载 +同名函数,具有相同数据类型 + +相同数据类型包含: +1. 参数个数 +2. 参数类型(包括参数的顺序) + +## 传参 + +### 简单参数传递 +在地址后面直接加上参数 +``` +http://localhost:5000/body/index/参数 +``` + +参数只能是id? +- 在项目的program.cs中,其中有串代码:`pattern: "{controller=Home}/{action=Index}/{id?}"` +- 上面的代码中{id?}就规定了参数名只能是id + +测试参数是否有被使用(传入) + +1. 在页面中直接看见参数:`return Content(id.ToString())`,id为参数 + - 使用watch热重载时,如果改变了参数[Index() ==> Index(int id)] 则在程序中会有两个函数名Index出现,结束程序重跑即可 + +2. 使用f5调试,Debug + - 在方法中添加断点,则在右边可看见参数是否被传入 + +### 复杂参数传递 +1. 在控制器中定义一个类型 +``` +public class 类名 +{ + public 数据类型 变量名; + public string Name{get;set;} = null!; +} +``` + +2. 在原本类中添加上[HttpPost],[FromBody] +``` +[HttpPost] +public IActionResult Create([FromBody] 自定义类的类名 students) +{ + return Content(JsonSerializer.Serialize(students)); + // 返回的是所写的全部内容 +} +``` +- 使用该post请求的方法,只能使用Postman软件辅助使用,在页面中是接受不到post请求的 + + +# 作业--控制器传参 +### 1 +简单参数传递 在一个叫Blog控制器中,定义一个叫Index的Action,并且传递一个int类型的值,id为变量名 +```cs +public IActionResult Index(int id) +{ + return Content(id.ToString()); +} +``` + +### 2 +简单参数传递 在一个叫Blog控制器中,定义一个叫Index_2的Action,并且传递一个string类型的值,id为变量名 +```cs +public IActionResult Index_2(string id) +{ + return Content(id); +} +``` + +### 3 +简单参数传递 在一个叫Blog控制器中,定义一个叫Index_3的Action,并且传递一个string类型的值,name为变量名 +```cs +public IActionResult Index_3(string name) +{ + return Content(name); +} +``` + +### 4 +复杂参数传递 在一个叫Blog的控制器中,定义一个名为Create的Action,并且传递一个BlogCreateDto类型的值,blogCreateDto为变量名 +```cs +[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为变量名 +```cs +[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;} = 0!; + public string Stock{get;set;} = null!; +} +``` + +### 6 +复杂参数传递 在一个叫Blog的控制器中,定义一个名为Create_2的Action,并且传递一个Students类型的值,studentCreateDto为变量名 +```cs +[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;} = 0!; +} +``` -- Gitee