diff --git "a/\351\231\210\346\242\246\346\266\265/20241127\350\247\206\345\233\276\350\257\246\350\247\243.md" "b/\351\231\210\346\242\246\346\266\265/20241127\350\247\206\345\233\276\350\257\246\350\247\243.md" new file mode 100644 index 0000000000000000000000000000000000000000..fa067a4e13d7e03569a9b1e99ac34a7f708a4388 --- /dev/null +++ "b/\351\231\210\346\242\246\346\266\265/20241127\350\247\206\345\233\276\350\257\246\350\247\243.md" @@ -0,0 +1,82 @@ +## Razor +Razor 支持 C#,并使用` @ `符号从 HTML 转换为 C#。 Razor 计算 C# 表达式,并将它们呈现在 HTML 输出中 + +当 @ 符号后跟 Razor 保留关键字时,它会转换为 Razor 特定标记. + +### 隐式 Razor 表达式 +以 @ 开头,后跟 C# 代码。隐式表达式不能包含空格,但 C# **await** 关键字除外。不能包含 C# 泛型,因为括号 (<>) 内的字符会被解释为 HTML 标记。 + +### 显式 Razor 表达式 +由 @ 符号和平衡圆括号组成。 + +### Razor 代码块 +代码块以 @ 开始,并括在 {} 中,例如: +```cs +@{ + var quote = "The future depends on what you do today. - Mahatma Gandhi"; +} +

@quote

+@{ + quote = "Hate cannot drive out hate, only love can do that. - Martin Luther King, Jr."; +} +

@quote

+``` +该代码呈现以下 HTML: +```HTML +

The future depends on what you do today. - Mahatma Gandhi

+

Hate cannot drive out hate, only love can do that. - Martin Luther King,Jr.";

+``` +## 渲染 +- 简单数据在视图的渲染和展示 +- 复杂数据在视图的渲染和展示 +- 集合数据在视图的渲染和展示 + +## 内置ASP.NET Core标记帮助程序--定位点 +定位点标记帮助程序可通过添加新属性来增强标准的 HTML 定位点 () 标记。 按照约定,属性名称将使用前缀 asp-。 asp- 属性的值决定呈现的定位点元素的 href 属性值 + +属性: +1. `asp-controller`:可分配用于生成 URL 的控制器。 +2. `asp-action `:属性值表示生成的 href 属性中包含的控制器操作名称。 +3. `asp-all-route-data` :支持创建键值对字典。 键是参数名称,值是参数值。 + +>操作实例 +```cs +public IActionResult Index() +{ + var list = new BlogCreateDto + { + Title="哈哈哈", + Author="哈", + Content="哈哈哈哈呵呵哈哈哈哈哈哈哈" + }; + + return View(list); +} +``` +```cshtml +

@Model.Title

+

@Model.Author

+

@Model.Content

+ +

BlogCreateDto:

+ + + + + + + + @foreach(var item in @Model.BlogCreateDto) + { + + + + + + + } +
标题作者内容操作
@item.Title@item.Author@item.Content + + +
+``` \ No newline at end of file diff --git "a/\351\231\210\346\242\246\346\266\265/20241129mvc\344\270\200\345\245\227\346\265\201\347\250\213.md" "b/\351\231\210\346\242\246\346\266\265/20241129mvc\344\270\200\345\245\227\346\265\201\347\250\213.md" new file mode 100644 index 0000000000000000000000000000000000000000..159699aaf6db82926cbd069af5634e25d6008181 --- /dev/null +++ "b/\351\231\210\346\242\246\346\266\265/20241129mvc\344\270\200\345\245\227\346\265\201\347\250\213.md" @@ -0,0 +1,94 @@ +# mvc布置 +## 终端 +- **Ctrl+`**打开终端 +- dotnet new mvc -o ./Blog 创建一个名为Blog的文件夹包含mvc文件 +- dotnet watch 可以看一下效果 (每次修改Ctrl+R可以重新加载一下) +## 打开控制台(Controllers)列表 +- 新建一个例如BlogsControllers.cs的文件夹 +- 里面添加的内容例如: +```cs +namespace Blog.Controllers; +public class BlogsController:Controller +{ +public IActionResult Index()//方法名 + { + return View();//()可以填返回的地方 + } +} +``` +## 打开视图(Views)列表 +- 新建一个同控制台:例如Blogs的文件夹 +- 里面放入同以上方法名的Index的cs文件 +## 打开模型(Models)列表 +- 定义一个数据库的表:例建一个Blogs.cs文件,代码如下 +```cs +namespace Blog.Models; +public class Blogs +{ + public int Id{get;set;} + public string Title{get;set;}=null!; + public string Content{get;set;}=null!; + public string Author{get;set;}=null!; +} +``` +- 静态构造函数(只执行一次):;例:新建一个Jt.cs文件 +- 使用静态构造函数:public static List Blog = new List{"value1","value2"...} +```cs +namespace Blog.Models; +public class Jt +{ + public static ListBlogs{get;set;} + static Jt() + { + Blogs=new List(); + for (int i = 0; i < 10; i++) + { + var temp=new Blogs + { + Id=i, + Title="哈哈哈", + Content="嘿嘿嘿", + Author="吼吼吼" + }; + Blogs.Add(temp); + } + } +} +``` +## 实现跳转增加页面 +- 使用标签展现 增删改 +```cs +新增 +编辑 +``` + - sp-controller:指定表单提交的 目标控制器 + - asp-action:指定表单提交时应该调用的控制器中的 动作(方法) + - asp-route-*:通常与以上两个属性配合使用,便在创建表单或链接时能够自动将模型的状态或路由参数传递给控制器的特定动作。-id就是传递相应行的id号 +- 页面显示form表单,一定要声明Models +```cs + +@model Blogs.Models.Blog; + +
+
+
+
+ +
+``` +- 使用post请求,添加到表单 +```cs +[HttpPost] +public IActionResult Create(Blog input) +{ + var maxId = Db.Blog.Select(t => t.Id).Max();//获取表单中最大的ID数,,方便程序在添加中自行增加Id数:Max()方法 + // 添加后ID也增加 + input.Id = maxId + 1; + // 将添加的内容加入表单 + Db.Blog.Add(input); + return RedirectToAction("Index"); + // 测试添加内容是否有被获取到:return Content(JsonSerializer.Serialize(input)); +} +``` + +