From 075130a8625e50dc378afc2612caccb6199e3474 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BA=B7=E7=AB=A5=E9=9E=8B?= <1431529528@qq.com> Date: Wed, 20 Nov 2024 14:10:01 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../20241118--Linux\345\270\203\345\261\200.md" | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 "\345\272\267\345\273\272\346\242\205/20241118--Linux\345\270\203\345\261\200.md" diff --git "a/\345\272\267\345\273\272\346\242\205/20241118--Linux\345\270\203\345\261\200.md" "b/\345\272\267\345\273\272\346\242\205/20241118--Linux\345\270\203\345\261\200.md" new file mode 100644 index 0000000..e69de29 -- Gitee From e0c87b66966666665a62af3fa434a7b174109062 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BA=B7=E7=AB=A5=E9=9E=8B?= <1431529528@qq.com> Date: Sun, 24 Nov 2024 20:19:12 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...0241118--Linux\345\270\203\345\261\200.md" | 30 +++ ...10\345\206\263\346\235\241\344\273\266.md" | 20 ++ ...66\345\231\250\344\274\240\345\217\202.md" | 232 ++++++++++++++++++ 3 files changed, 282 insertions(+) create mode 100644 "\345\272\267\345\273\272\346\242\205/20241120--Debian\351\203\250\347\275\262MVC\347\232\204\345\205\210\345\206\263\346\235\241\344\273\266.md" create mode 100644 "\345\272\267\345\273\272\346\242\205/20241122--Linux\343\200\201MVC\347\273\203\344\271\240\343\200\201\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" diff --git "a/\345\272\267\345\273\272\346\242\205/20241118--Linux\345\270\203\345\261\200.md" "b/\345\272\267\345\273\272\346\242\205/20241118--Linux\345\270\203\345\261\200.md" index e69de29..f9caefe 100644 --- "a/\345\272\267\345\273\272\346\242\205/20241118--Linux\345\270\203\345\261\200.md" +++ "b/\345\272\267\345\273\272\346\242\205/20241118--Linux\345\270\203\345\261\200.md" @@ -0,0 +1,30 @@ +# Linux的一些布局 +## Linux系统种类 +- 红帽企业版`Linux`:rhel是全世界使用最广泛的Linux系统。它具有极强的性能与稳定性,是众多生产环境中使用的(收费)系统。 +- Fedora:由红帽公司发布的桌面版系统套件,用户可以免费体验到最新的技术或工具,这些技术或工具在成熟之后悔被加入到RHEL系统中,因此Fedora也成为RHEL系统的试验版本 +- CentOS:通过帮你 RHEL系统查询编译并发布给用户免费使用的Linux系统,具有广泛的试验人群。 +- Deepin:中国发行,对优秀的开源成品进行集成和配置 +- Debian:稳定性、安全性强,使用率高 +- Ubuntu:派生自Debian的操作系统 +## 一些命令 +- `ls`:列出当前目录中的文件和子目录 +- `pwd`:显示当前工作目录的路径 +- `cd`:切换工作目录 +``` +例 +cd /path/to/directory +``` +- `mkdir`:创建新目录 +``` +例 +mkdir directory +``` +- `rmdir`:删除空目录 +- `rm`:删除文件或目录 +- `cp`:复制文件或目录 +- `mv`:移动或重命名文件或目录 +- `touch`:创建空文件或更新文件的时间戳 +- `cat`:连接和显示文件内容 +- `more/less`:逐页显示文本文件内容 +- `head/tail`:显示文件前几行或后几行 +- `grep`:在文件中搜索指定文本 \ No newline at end of file diff --git "a/\345\272\267\345\273\272\346\242\205/20241120--Debian\351\203\250\347\275\262MVC\347\232\204\345\205\210\345\206\263\346\235\241\344\273\266.md" "b/\345\272\267\345\273\272\346\242\205/20241120--Debian\351\203\250\347\275\262MVC\347\232\204\345\205\210\345\206\263\346\235\241\344\273\266.md" new file mode 100644 index 0000000..129d383 --- /dev/null +++ "b/\345\272\267\345\273\272\346\242\205/20241120--Debian\351\203\250\347\275\262MVC\347\232\204\345\205\210\345\206\263\346\235\241\344\273\266.md" @@ -0,0 +1,20 @@ +## Debian部署MVC(Asp.Net Core)的先决条件 + +1. 在服务器上安装了运行环境或者调试环境(必要条件) + 1. 如何安装SDK 包管理器 + - 先下载个文件 wget curl + - 注册文件 + - 删除那个已经注册过的文件 + - 更新软件源 apt update + - 安装sdk apt install dotnet-sdk-8.0 + 2. 在Linux上安装软件或者应用常用方式如下: + 1. 包管理器 相对于用户来说最简单 + 2.使用二进制文件安装 相对于用户来说次简单 + 3. 编译安装 相对于用户来说最难 +2. 将打包好的程序上传到指定目录(必要条件) + 1. scp工具 scp-r ./* root@XXXX.XXX:/var/www/XXXX.XXX + - 打包 dotnet publish + - 测试(工作当中一般建议测试,可以视情况省略) + - 上传 + 2. xftp +3. 一般建议使用nginx做反向代理(PS:如果不做反向代理,则这条可以不用) diff --git "a/\345\272\267\345\273\272\346\242\205/20241122--Linux\343\200\201MVC\347\273\203\344\271\240\343\200\201\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\272\267\345\273\272\346\242\205/20241122--Linux\343\200\201MVC\347\273\203\344\271\240\343\200\201\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" new file mode 100644 index 0000000..b24062a --- /dev/null +++ "b/\345\272\267\345\273\272\346\242\205/20241122--Linux\343\200\201MVC\347\273\203\344\271\240\343\200\201\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" @@ -0,0 +1,232 @@ +## Linux练习 + +## MVC练习 +1. 创建一个控制台项目,没有任何选项,体会项目名称和什么有关系 +```cs +dotnet new console +``` +> 这样会生成一个默认的控制台项目,体会项目名称与代码文件的关系。 + +2. 创建一个控制项目,项目名称Blog + ```cs + dotnet new console -n Blog + ``` +> 这将创建一个名为 `Blog` 的控制台项目。 + +3. 创建一个控制台项目,输出到Blog目录 +```cs +dotnet new console -o Blog +``` +> 这将创建一个控制台项目,并将其输出到 `Blog` 目录中。 + +4. 创建一个MVC项目,指定项目名称 +```cs +dotnet new mvc -n mvcProject +``` +> 这将创建一个名为 `MyMvcProject` 的MVC项目。 + +5. 创建一个MVC项目,指定输出目录 +```cs +dotnet new mvc -o mvcProject +``` +> 这将创建一个MVC项目,并将其输出到 `MyMvcProjectDir` 目录中。 + +6. 创建一个带解决方案,其下有一个MVC项目,3个类库项目的“综合项目” + + 1. 创建解决方案 + + ```cs + dotnet new sln -n Solution + ``` + + 2. 创建mvc项目 + + ```cs + dotnet new mvc -n MvcProject + ``` + + 3. 创建类库 + + ```cs + dotnet new classlib -n ClassLibrary1 + dotnet new classlib -n ClassLibrary2 + dotnet new classlib -n ClassLibrary3 + ``` + +7. 创建一个项目,在默认控制器(Home)下,新增一个Action方法,名为Ok,同时为其创建对应视图以显示这个视图 + 1. 创建一新的Mvc项目 + ```cs + dotnet new mvc -n MvcProject + ``` + + 2. 打开项目里的`HomeController`并添加`OK`方法 + ```cs + public class HomeController:Controller + { + public IActionResult Ok() + { + return View(); + } + } + ``` + + 3. 在Views文件夹里添加视图文件:`Views/Home/Ok.cshtml`,并添加内容 + ```html +

Ok View

+

这是ok视图

+ ``` +8. 创建一个项目,创建一个新的控制器,名为Blogs,新的控制器拥有一个名为Index的Action,该方法返回一个视图,视图显示“神级预判” + 1. 创建一个新的Mvc项目 + ```cs + dotnet new Mvc -n MvcProject + ``` + + 2. 创建`Blogs`控制器:`Controllers/BlogsController.cs` + + ```cs + public class BlogsController : Controller + { + public IActionResult Index() + { + return View(); + } + } + ``` + + 3. 创建对应视图文件`Views/Blogs/Insex.cshtml`并添加内容 + ```html +

神级预判

+ ``` + +9. 给第8题的新控制,添加一个新的Action,名为Music,不接受任何参数,并返回对应的视图,视图显示“顶级打野” + 1. 在 `Blogs` 控制器中添加 `Music` 方法:`Controllers/BlogsController.cs` + ```cs + public class BlogController:Controller + { + public IActionResult Index() + { + return View(); + } + public IActionResult Music() + { + return View(); + } + } + ``` + 2. 创建对应的视图文件 `Views/Blogs/Music.cshtml` 并添加内容: + ```html +

顶级打野

+ ``` + +10. 给第8题的新控制器,新增一个Action,名为List,不接受任何参数,并返回对应视图,视图显示一个经典CRUD界面 + 1. 在 `Blogs` 控制器中添加 `List` 方法: + ```csharp + public class BlogsController : Controller + { + public IActionResult Index() + { + return View(); + } + + public IActionResult List() + { + return View(); + } + } + ``` + + 2. 创建对应的视图文件 `Views/Blogs/List.cshtml` 并添加内容: + ```html +

经典CRUD界面

+

这里显示CRUD界面的内容

+ ``` +11. 新增一个控制器,名为Products,该控制器具有一个名为Edit的Action,这个Action接受一个int类型的参数id,显示这个id + 1. 创建`Products`控制器:`Controllers/ProductsController.cs` + ```cs + public class ProductsController:Controller + { + public IActionResult Edit(int id) + { + ViewBag.Id = id; + return View(); + } + } + + ``` + 2. 创建`ProductsController`对应的视图文件 `Views/Products/Edit.cshtml` 并添加内容: + ```html +

Edit Product

+

编辑的产品ID:@ViewBag.Id

+ ``` + +12. 在11题的新控制器中,新增一个名为Create的Action,该Action接受一个类型为Students(有姓名、年龄、体长属性)的参数,并展示该参数的姓名属性 + + 1. 在 `Products` 控制器中添加 `Create` 方法,并定义 `Students` 类: + ```cs + using Microsoft.AspNetCore.Mvc; + using project.Models; + + namespace project.Controllers + { + public class ProductsController : Controller + { + public class Students + { + public required string Name { get; set; } + public int Age { get; set; } + public double Height { get; set; } + } + + [HttpGet] + public IActionResult Create() + { + return View(); + } + + [HttpPost] + public IActionResult Create(Students student) + { + ViewBag.StudentName = student.Name; + return View(student); + } + } + } + ``` + 2. 创建对应的视图文件 `Views/Products/Create.cshtml` 并添加内容: + ```html +

Create Student

+

学生姓名:@ViewBag.StudentName

+

年龄:@Model.Age

+

身高:@Model.Height

+ ``` + + +## 专项练习-控制器传参 + +1. 简单参数传递 在一个叫Blog控制器中,定义一个叫Index的Action,并且传递一个int类型的值,id为变量名 +在`Controllers/BlogController.cs`中 +```cs +public class BlogController:Controller +{ + public IActionResult Index(int id) + { + return View(); + } +} +``` + +2. 简单参数传递 在一个叫Blog控制器中,定义一个叫Index_2的Action,并且传递一个string类型的值,id为变量名 + +3. 简单参数传递 在一个叫Blog控制器中,定义一个叫Index_3的Action,并且传递一个string类型的值,name为变量名 + +4. 复杂参数传递 在一个叫Blog的控制器中,定义一个名为Create的Action,并且传递一个BlogCreateDto类型的值,blogCreateDto为变量名 + + * PS BlogCreateDto类型具有Title、Author、Content自动属性 + +5. 复杂参数传递 在一个叫Blog的控制器中,定义一个名为Create_1的Action,并且传递一个Products类型的值,productCreateDto为变量名 + + * PS Products类型具有Name、Price、Stock自动属性 + +6. 复杂参数传递 在一个叫Blog的控制器中,定义一个名为Create_2的Action,并且传递一个Students类型的值,studentCreateDto为变量名 + + * PS Students类型具有StudentName、Sex、Age自动属性 \ No newline at end of file -- Gitee