+@Model.Author
+@Model.Content
+```
+## 5.
+> 复杂参数传递 在一个叫Blog的控制器中,定义一个名为Create_1的Action,并且传递一个Products类型的值,productCreateDto为变量名
+PS: Products类型具有Name、Price、Stock自动属性
+[显示效果]
+**在控制器中输入**
+```js
+using Microsoft.AspNetCore.Mvc;
+namespace Blog.Controllers;
+public class BabyController:Controller{
+//视图显示
+ [HttpPost]
+ public IActionResult Create_1([FromBody] Products productCreateDto){
+ return View(productCreateDto);
+ }
+ public IActionResult Index( int id){
+ var productCreateDto=new Products{
+ Name="橡皮擦",
+ Price="2¥",
+ Stock="200个"
+ };
+ return View(productCreateDto);
+ }
+}
+// 定义类型
+ public class Products{
+ public string Name{get;set;}=null!;
+ public string Price{get;set;}=null!;
+ public string Stock{get;set;}=null!;
+ }
+```
+**在views里的Baby的Index.cshtml中**
+```js
+@model Blog.Controllers.Products;
+
+
商品:@Model.Name
+价格:@Model.Price
+库存:@Model.Stock
+```
+## 6.
+> 复杂参数传递 在一个叫Blog的控制器中,定义一个名为Create_2的Action,并且传递一个Students类型的值,studentCreateDto为变量名
+PS: Students类型具有StudentName、Sex、Age自动属性
+[显示效果]
+**在控制器中输入**
+```js
+using Microsoft.AspNetCore.Mvc;
+namespace Blog.Controllers;
+public class BabyController:Controller{
+//视图显示
+ [HttpPost]
+ public IActionResult Create_2([FromBody] Students studentCreateDto){
+ return View(studentCreateDto);
+ }
+ public IActionResult Index( int id){
+ var studentCreateDto=new Students{
+ StudentName="蓝蓝",
+ Sex="女",
+ Age="18"
+ };
+ return View(studentCreateDto);
+ }
+}
+// 定义类型
+ public class Students{
+ public string StudentName{get;set;}=null!;
+ public string Sex{get;set;}=null!;
+ public string Age{get;set;}=null!;
+ }
+```
+**在views里的Baby的Index.cshtml中**
+```js
+@model Blog.Controllers.Students;
+
+
姓名:@Model.StudentName
+性别:@Model.Sex
+年龄:@Model.Age
+```
+
diff --git "a/\347\250\213\346\242\246/20241125_Action\350\277\224\345\233\236\345\200\274\347\261\273\345\236\213(\344\274\240\345\217\202).md" "b/\347\250\213\346\242\246/20241125_Action\350\277\224\345\233\236\345\200\274\347\261\273\345\236\213(\344\274\240\345\217\202).md"
index 29413c4c40d06eada9507f079e3f96ea60b59b71..86e0be9bc73b2d29da2d4a2143523952fbb43857 100644
--- "a/\347\250\213\346\242\246/20241125_Action\350\277\224\345\233\236\345\200\274\347\261\273\345\236\213(\344\274\240\345\217\202).md"
+++ "b/\347\250\213\346\242\246/20241125_Action\350\277\224\345\233\236\345\200\274\347\261\273\345\236\213(\344\274\240\345\217\202).md"
@@ -97,3 +97,210 @@ public ActionResult > Edit(){
}
}
```
+
+# 基础能力
+> 1. 生成一个随机整数,范围[0,100],注意是否包含
+## [显示效果] 
+**在控制器里**
+```js
+ //方法一:
+ [HttpGet]
+ public ActionResult Getrandomnumber(){
+ Random random=new Random();
+ // int randomNumber =random.Next(包含,不包含);
+ int randomNumber =random.Next(0,101);
+ return View(randomNumber);
+ }
+ // 方法二:
+ public string Rndnumber(){
+ var rannumber=new Random();
+ int number=rannumber.Next(0,101);
+ return number.ToString();
+ }
+```
+**在Views的GetRandomNumber.cshtml**
+```js
+@model int
+
+
[0,100]随机数:
@Model
+```
+> 2. 生成一个随机整数,范围(0,100],注意是否包含
+```js
+ [HttpGet]
+ public ActionResult Getrandomnumber(){
+ Random random=new Random();
+ int randomNumber=random.Next(1,101);
+ return View(randomNumber);
+ }
+```
+**在Views的GetRandomNumber.cshtml**
+```js
+@model int
+
+
(0,100]随机数:
@Model
+```
+> 3. 生成10个随机整数,范围[5,80],注意是否包含
+## [显示效果] 
+```js
+ [HttpGet]
+ public ActionResult > Getrandomnumber(){
+ //创建一个Random对象生成随机数
+ Random random=new Random();
+ //创建一个列表来存储随机数
+ List randoms=new List();
+ for (int i = 0; i < 10; i++)
+ {
+ int randomNumber=random.Next(5,81);
+ //将生成的随机数增加到列表里
+ randoms.Add(randomNumber);
+ }
+ return View(randoms);
+ }
+```
+**在Views的GetRandomNumber.cshtml**
+```js
+@model List
+
生成10个随机整数,范围[5,80]
+ @foreach (var number in Model)
+ {
+ @number、;
+ }
+```
+> 4. 定义一个字符串,字符串中有100个中文字符,需要从中随机取1个字符串
+## [显示效果] 
+```js
+ //方法一:
+ private string MakeStr(int strindex)
+ {
+ var Str = "是每个庭院夜深时说的话是谁躲在角落忍着偷把眼泪檫";
+ var rndstr = Str[strindex];
+ return rndstr.ToString();
+ }
+ public string RanStr()
+ {
+ var rnd = new Random();
+ int rndNum = rnd.Next(0,25);
+ var res = MakeStr(rndNum);
+ return res;
+ }
+ //方法二:
+ public string RndStr(){
+ var Str="是每个庭院夜深时说的话是谁躲在角落忍着偷把眼泪檫";
+ var rnd=new Random();
+ int rndnumber=rnd.Next(0,Str.Length+1);
+ var rndstr=Str[rndnumber];
+ return rndstr.ToString();
+ }
+```
+> 5. 定义一个字符串,字符串中有100个中文字符,需要从中随机取5-50个字符,组成新的字符
+## [显示效果] 
+```js
+ //方法一:
+ public string MakeStr2()
+ {
+ var Str = "赵钱孙李周吴郑王冯陈褚卫蒋沈韩杨朱秦尤许何吕施张孔曹严华金魏陶姜戚谢邹喻柏水窦章云苏潘葛奚范彭郎鲁韦昌马苗凤花方俞任袁柳酆鲍史唐费廉岑薛雷贺倪汤滕殷罗毕郝邬安常乐于时傅皮卞齐康伍余元卜顾孟平黄和穆萧尹姚邵湛汪祁毛禹狄米贝明臧计伏成戴谈宋茅庞熊纪舒屈项祝董梁杜阮蓝闵席季麻强贾路娄危江童颜郭梅盛林刁钟徐邱骆高夏蔡田樊胡凌霍虞万支柯昝管卢莫经房裘缪干解应宗丁宣贲邓郁单杭洪包诸左石崔吉钮龚程嵇邢滑裴陆荣翁荀羊於惠甄曲家封芮羿储靳汲邴糜松井段富巫乌焦巴弓牧隗山谷车侯宓蓬全郗班仰秋仲伊宫宁仇栾暴甘钭历戎祖武符刘景詹束龙叶幸司韶郜黎蓟溥印宿白怀蒲邰从鄂索咸籍赖卓蔺屠蒙池乔阳郁胥能苍双闻莘党翟谭贡劳逄姬申扶堵冉宰郦雍郤璩桑桂";
+ var rnd = new Random();
+ int rndNum = rnd.Next(5, 51);
+ string newstr = "";
+ for (int i = 0; i < rndNum; i++)
+ {
+ int strindex = rnd.Next(0, Str.Length + 1);
+ newstr += Str[strindex];
+ }
+ return newstr;
+ }
+ //方法二:
+ public ActionResult MakeStr(){
+ var Str="赵钱孙李周吴郑王冯陈褚卫蒋沈韩杨朱秦尤许何吕施张孔曹严华金魏陶姜戚谢邹喻柏水窦章云苏潘葛奚范彭郎鲁韦昌马苗凤花方俞任袁柳酆鲍史唐费廉岑薛雷贺倪汤滕殷罗毕郝邬安常乐于时傅皮卞齐康伍余元卜顾孟平黄和穆萧尹姚邵湛汪祁毛禹狄米贝明臧计伏成戴谈宋茅庞熊纪舒屈项祝董梁杜阮蓝闵席季麻强贾路娄危江童颜郭梅盛林刁钟徐邱骆高夏蔡田樊胡凌霍虞万支柯昝管卢莫经房裘缪干解应宗丁宣贲邓郁单杭洪包诸左石崔吉钮龚程嵇邢滑裴陆荣翁荀羊於惠甄曲家封芮羿储靳汲邴糜松井段富巫乌焦巴弓牧隗山谷车侯宓蓬全郗班仰秋仲伊宫宁仇栾暴甘钭历戎祖武符刘景詹束龙叶幸司韶郜黎蓟溥印宿白怀蒲邰从鄂索咸籍赖卓蔺屠蒙池乔阳郁胥能苍双闻莘党翟谭贡劳逄姬申扶堵冉宰郦雍郤璩桑桂";
+ var rnd=new Random();
+ int rndNum=rnd.Next(5,51);
+ List rndstrs=new List();//由于用到了ToArray()方法所以要转换类型char
+ for (int i = 0; i < rndNum; i++)
+ {
+ int strindex=rnd.Next(0,Str.Length+1);
+ rndstrs.Add(Str[strindex]);//因为这边是单个字符类型而不是字符串类型
+ }
+ string newstr=new string(rndstrs.ToArray());//构建新字符串、ToArray():将集合转换为数组,返回整数类型
+ return Ok(newstr);
+ }
+```
+> 6. 定义2个字符串,第一个字符串中放百家姓,第二个字符串中放中文字符,要求从第一个字符串随机取得一个姓,再从第二个字符串中随机获得1到2个字符组成新字符串,和第一个字符串取得的姓组成一个姓名
+## [显示效果] 
+```js
+ public string FirstStr()
+ {
+ var Str = "赵钱孙李周吴郑王冯陈褚卫蒋沈韩杨朱秦尤许何吕施张孔曹严华金魏陶姜戚谢邹喻柏水窦章云苏潘葛奚范彭郎鲁韦昌马苗凤花方俞任袁柳酆鲍史唐费廉岑";
+ var rnd = new Random();
+ int rndnum = rnd.Next(0, Str.Length + 1);
+ var rndstr = Str[rndnum];
+ return rndstr.ToString();
+ }
+
+ // public string MakeStr()
+ // {
+ // var Str = "中华儿女多奇志不爱红装爱武装横眉冷对千夫指俯首甘为孺子牛江山代有才人出各领风骚数百年海内存知己天涯若比邻路漫漫其修远兮吾将上下而求索";
+ // var rnd = new Random();
+ // int rndnum = rnd.Next(0, Str.Length + 1);
+ // var rndstr = Str[rndnum];
+ // return rndstr.ToString();
+ // }
+
+ public string MakeName()
+ {
+ var Str = "中华儿女多奇志不爱红装爱武装横眉冷对千夫指俯首甘为孺子牛江山代有才人出各领风骚数百年海内存知己天涯若比邻路漫漫其修远兮吾将上下而求索";
+ var rnd = new Random();
+ int rndnum = rnd.Next(0, Str.Length + 1);
+ var rndstr = Str[rndnum];
+ var strLong = rnd.Next(1, 3);
+ string newstring = "";
+ for (int i = 0; i < strLong; i++)
+ {
+ newstring += rndstr;
+ // newstring +=MakeStr();
+ }
+ return newstring;
+ }
+ public string NewName()
+ {
+ var fname = FirstStr();
+ var sname = MakeName();
+ var newname = fname + sname;
+ return newname;
+ }
+```
+
+# 练习-控制器返回值
+## 1. 控制器返回值-渲染简单数据到页面
+[显示效果]
+```js
+ public string Page1()
+ {
+ return "吃早饭了吗?";
+ }
+```
+## 2. 控制器返回值-渲染复杂数据到页面
+[显示效果]
+```js
+ public dynamic Page2()
+ {
+ return new
+ {
+ Id = 18,
+ name="xxx"
+ };
+ }
+```
+## 3. 控制器返回值-渲染集合数据到页面
+[显示效果]
+```js
+ public List Page3(){
+ var students=new List(){
+ "小红",
+ "18",
+ "185"
+ };
+ return students;
+ }
+```
+
+
diff --git "a/\347\250\213\346\242\246/20241127_\351\232\217\346\234\272(\345\255\227\347\254\246\344\270\262&\346\225\264\346\225\260)&\345\256\232\344\275\215\347\202\271.md" "b/\347\250\213\346\242\246/20241127_\351\232\217\346\234\272(\345\255\227\347\254\246\344\270\262&\346\225\264\346\225\260)&\345\256\232\344\275\215\347\202\271.md"
new file mode 100644
index 0000000000000000000000000000000000000000..1a7bc2a93436b51ef2600e565b99b392f44e36c7
--- /dev/null
+++ "b/\347\250\213\346\242\246/20241127_\351\232\217\346\234\272(\345\255\227\347\254\246\344\270\262&\346\225\264\346\225\260)&\345\256\232\344\275\215\347\202\271.md"
@@ -0,0 +1,22 @@
+# 字符串渲染页面(简单)
+```js
+public string GenStr(){
+ return "sdfds52";
+}
+```
+# 字符串渲染页面(指定)
+```js
+public string MakeStr(){
+ var str="爱是时间的古董";
+ var rndstr=str[3]; //页面显示-->间
+ return rndstr.ToString();
+}
+```
+# 定位点(cshtml里)
+```js
+//页面地址显示(localhost:5000/baby/create/12);页面显示跳转查看;点击切换create.cshtml里的视图
+跳转查看
+
+//页面地址显示(localhost:5000/baby/create);页面显示切换查看;点击切换create.cshtml里的视图
+切换查看
+```
\ No newline at end of file
diff --git "a/\347\250\213\346\242\246/20241129_\345\270\256\345\212\251\347\250\213\345\272\217(\345\242\236&\345\210\240&\346\224\271).md" "b/\347\250\213\346\242\246/20241129_\345\270\256\345\212\251\347\250\213\345\272\217(\345\242\236&\345\210\240&\346\224\271).md"
new file mode 100644
index 0000000000000000000000000000000000000000..c5cbc3b3a475a049b2bd65d2321bf30f5fcc93bd
--- /dev/null
+++ "b/\347\250\213\346\242\246/20241129_\345\270\256\345\212\251\347\250\213\345\272\217(\345\242\236&\345\210\240&\346\224\271).md"
@@ -0,0 +1,164 @@
+# 帮助程序(新增)
+1. 先在Models里(Blogs.cs)定义类型,建一个命名空间-->在建一个模拟数据库(Db.cs)
+```js
+//模拟数据库
+ public static class Db
+ {
+ //静态构造函数,只执行一次
+ public static List Blogs{get;set;}
+ static Db()
+ {
+ //初始化静态属性
+ Blogs=new List();
+ //给这个集合属性,塞进一些Blogs
+ for(int i=0;i<15;i++)
+ {
+ var tmp=new Blogs
+ {
+ Id=i+1,
+ Title="xxxx",
+ Content="xxxxxxxx"
+ }
+ Blogs.Add(tmp);
+ }
+ }
+ }
+```
+2. 再在控制器中(BlogsController.cs)定义返回值类型
+3. 在Views里(Blogs/Index.cshtml)-->制定表单所需要的网页
+4. 表格样式可在(wwwroot/css/)写-->建一个(base.css)写样式美化【若要在Views里引用样式则】
+5. 在2的控制器中健Create的返回类型-->Views里新增网页-->返回Index,渲染新增数据到页面
+```js
+//Create 返回类型:(Create.cshtml)
+//在新增的cshtml里制一个新增网页后在控制器中post请求
+ //先声明
+@model Blog.Models.Blogs;
+
+
+
+//控制器中
+ [HttpPost]
+ public IActionResult Create(Blogs input)
+ {
+ var maxId=Db.Blogs.Select(t=>t.Id).Max();
+ input.Id=maxId+1;
+ Db.Blogs.Add(input);
+ //返回Index
+ return RedirectToAction("Index");
+ }
+```
+# 专业项练习-视图及其模板引擎
+## 1. 渲染(展示)简单数据类型到视图
+[显示效果]
+```js
+//在控制器里
+ public IActionResult Index2(){
+ var message=new Babyindex2{
+ Name="小白",
+ Age=18
+ };
+ return View(message);
+ }
+//在Models里Babyindex.cs
+public class Babyindex2
+{
+ public string Name{get;set;}=null!;
+ public int Age{get;set;}
+}
+//在Views里Index2.cshtml
+@model Babyindex2
+
姓名:@Model.Name
+
年龄:@Model.Age
+```
+## 2. 渲染(展示)对象数据到视图
+[显示效果]
+```js
+ public IActionResult Index2(int id){
+ // 根据id从数据库获取用户信息
+ // 创建一个示例用户对象
+ var message=new Babyindex2{
+ Name="小蓝",
+ Age=22
+ };
+ return View(message);
+ }
+ public class Babyindex2
+{
+ public string Name{get;set;}=null!;
+ public int Age{get;set;}
+}
+@model Babyindex2
+
姓名:@Model.Name
+
年龄:@Model.Age
+```
+## 3. 渲染(展示)集合数据到视图
+[显示效果]
+```js
+ public IActionResult Index2(){
+ var messages=new List
+ {
+ new Babyindex2{Name="小黑",Age=30},
+ new Babyindex2{Name="小紫",Age=40}
+ };
+ return View(messages);
+ }
+ public class Babyindex2
+{
+ public string Name{get;set;}=null!;
+ public int Age{get;set;}
+}
+ @model List
+
+@foreach(var message in Model)
+{
+
姓名:@message.Name
+
年龄:@message.Age
+}
+
+```
+## 4. 渲染(展示)包含集合数据的对象数据到视图
+[显示效果]
+```js
+ public IActionResult Index2(int id){
+ var user=new Babyindex2
+ {
+ Name="小绿",
+ Age=50,
+ foods=new List
+ {
+ new Foods{FoodsCount=2,FoodsName="苹果"},
+ new Foods{FoodsCount=10,FoodsName="糖果"}
+ }
+ };
+ return View(user);
+ }
+//在Models里Babyindex.cs
+public class Babyindex2
+{
+ public string Name{get;set;}=null!;
+ public int Age{get;set;}
+ public List foods{get;set;}=null!;
+}
+
+public class Foods
+{
+ public int FoodsCount{get;set;}
+ public string FoodsName{get;set;}=null!;
+}
+//在Views里Index2.cshtml
+@model Babyindex2
+