From 6c00ae94ea13acfa99cd5f5c17b5743aa59d8c9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=88=90=E8=B1=AA?= <1400383615@qq.com> Date: Sun, 24 Nov 2024 21:15:55 +0800 Subject: [PATCH] 20241124 --- ...31\346\200\201\347\275\221\347\253\231.md" | 2 +- ...345\273\272mvc\351\241\271\347\233\256.md" | 114 ------------ ...70\350\247\201\346\214\207\344\273\244.md" | 45 +++++ .../20241113-mvc\351\241\271\347\233\256.md" | 22 +++ ...46\346\234\215\345\212\241\345\231\250.md" | 165 ------------------ ...72\347\241\200\347\273\223\346\236\204.md" | 67 +++++++ ...57\345\242\203\345\217\230\351\207\217.md" | 4 - .../20241118-mvc\345\237\272\347\241\200.md" | 69 ++++++++ .../20241120-httppost.md" | 65 +++++++ 9 files changed, 269 insertions(+), 284 deletions(-) delete mode 100644 "\346\235\250\346\210\220\350\261\252/20241111-\345\210\233\345\273\272mvc\351\241\271\347\233\256.md" create mode 100644 "\346\235\250\346\210\220\350\261\252/20241111-\345\270\270\350\247\201\346\214\207\344\273\244.md" create mode 100644 "\346\235\250\346\210\220\350\261\252/20241113-mvc\351\241\271\347\233\256.md" delete mode 100644 "\346\235\250\346\210\220\350\261\252/20241113-\345\260\206.Net\345\272\224\347\224\250\351\203\250\347\275\262\345\270\246\346\234\215\345\212\241\345\231\250.md" create mode 100644 "\346\235\250\346\210\220\350\261\252/20241114-mvc\351\241\271\347\233\256\345\237\272\347\241\200\347\273\223\346\236\204.md" delete mode 100644 "\346\235\250\346\210\220\350\261\252/20241114-\351\205\215\347\275\256\347\216\257\345\242\203\345\217\230\351\207\217.md" create mode 100644 "\346\235\250\346\210\220\350\261\252/20241118-mvc\345\237\272\347\241\200.md" create mode 100644 "\346\235\250\346\210\220\350\261\252/20241120-httppost.md" diff --git "a/\346\235\250\346\210\220\350\261\252/20241106-SSH\350\277\234\347\250\213\350\277\236\346\216\245_\345\256\211\350\243\205nigx_\351\203\250\347\275\262\351\235\231\346\200\201\347\275\221\347\253\231.md" "b/\346\235\250\346\210\220\350\261\252/20241106-SSH\350\277\234\347\250\213\350\277\236\346\216\245_\345\256\211\350\243\205nigx_\351\203\250\347\275\262\351\235\231\346\200\201\347\275\221\347\253\231.md" index a152a84..ecee625 100644 --- "a/\346\235\250\346\210\220\350\261\252/20241106-SSH\350\277\234\347\250\213\350\277\236\346\216\245_\345\256\211\350\243\205nigx_\351\203\250\347\275\262\351\235\231\346\200\201\347\275\221\347\253\231.md" +++ "b/\346\235\250\346\210\220\350\261\252/20241106-SSH\350\277\234\347\250\213\350\277\236\346\216\245_\345\256\211\350\243\205nigx_\351\203\250\347\275\262\351\235\231\346\200\201\347\275\221\347\253\231.md" @@ -2,7 +2,7 @@ 1. 检查网络连接 ``` - ping 远程主机地址 +ping 远程主机地址 ``` 2. 连接服务器 diff --git "a/\346\235\250\346\210\220\350\261\252/20241111-\345\210\233\345\273\272mvc\351\241\271\347\233\256.md" "b/\346\235\250\346\210\220\350\261\252/20241111-\345\210\233\345\273\272mvc\351\241\271\347\233\256.md" deleted file mode 100644 index be24611..0000000 --- "a/\346\235\250\346\210\220\350\261\252/20241111-\345\210\233\345\273\272mvc\351\241\271\347\233\256.md" +++ /dev/null @@ -1,114 +0,0 @@ -### 安装 .NET SDK(如果尚未安装) -首先,确保你已经安装了最新版本的 .NET SDK。如果还没有安装,可以参考之前的步骤来安装 .NET SDK 和运行时。 - -可以使用以下命令检查是否已安装: - -dotnet --version -2. 创建一个新的 MVC 项目 -使用 .NET CLI 来创建 MVC 项目。在命令行中执行以下命令: - -dotnet new mvc -n MyMvcApp -解释: -dotnet new mvc:创建一个新的 ASP.NET MVC 项目。 --n MyMvcApp:指定项目的名称,这里使用 MyMvcApp 作为项目名,你可以根据需要修改为其他名称。 -执行完后,.NET 将会生成一个新的 MVC 项目,包含基础的控制器、视图和模型文件。 - -3. 进入项目目录 -创建完成后,进入你的项目目录: - -cd MyMvcApp -4. 运行项目 -运行你的 MVC 项目,启动开发服务器: - -dotnet run -这时,你可以在浏览器中访问 http://localhost:5000,你应该能够看到一个基础的 MVC 应用页面。 - -5. 项目结构 -创建的 MVC 项目会包含以下目录和文件: - -Controllers:控制器类,负责处理用户的请求并返回响应。 - -默认的 HomeController.cs 文件。 -Views:视图文件,使用 Razor 语法来呈现 HTML 页面。 - -默认的 Home/Index.cshtml 视图。 -Models:用于存放数据模型的类。 - -默认没有创建模型类,但可以根据需求手动创建。 -wwwroot:包含静态文件,如 CSS、JavaScript 和图片。 - -appsettings.json:应用程序的配置文件。 - -Program.cs:配置和启动应用程序的入口点。 - -6. 访问控制器和视图 -控制器:你可以在 Controllers 目录下创建自己的控制器文件。例如,创建一个新的控制器 ProductController.cs 来处理产品相关的请求。 - -示例: - -public class ProductController : Controller -{ - public IActionResult Index() - { - return View(); - } -} -最基本的控制器结构 -csharp复制代码using Microsoft.AspNetCore.Mvc; - -namespace MyMvcApp.Controllers -{ - // 控制器类继承自 Controller 基类 - public class HomeController : Controller - { - // 最简单的操作方法,返回视图 - public IActionResult Index() - { - return View(); - } - } -} -视图:你可以在 Views 目录下为控制器创建视图文件。例如,为 ProductController 创建 Index.cshtml 视图文件。 - -示例: - -@* Views/Product/Index.cshtml *@ -

Product List

-

Here you can list all your products.

-7. 配置数据库(如果需要) -如果你的项目需要连接数据库,你可以通过 Entity Framework Core 来配置和使用数据库。 - -安装相关的 NuGet 包: - -dotnet add package Microsoft.EntityFrameworkCore.SqlServer -dotnet add package Microsoft.EntityFrameworkCore.Tools -创建数据库上下文类,并在 Startup.cs 中配置数据库连接。 - -例如,创建 ApplicationDbContext.cs: - -using Microsoft.EntityFrameworkCore; - -public class ApplicationDbContext : DbContext -{ - public DbSet Products { get; set; } - - public ApplicationDbContext(DbContextOptions options) - : base(options) - { - } -} -8. 调整路由(可选) -如果你想修改默认路由,可以在 Program.cs 或 Startup.cs 文件中进行配置。 - -例如,默认路由通常是: - -app.MapControllerRoute( - name: "default", - pattern: "{controller=Home}/{action=Index}/{id?}"); -你可以根据需要调整路由规则。 - -9. 发布应用(生产环境) -一旦你完成了 MVC 应用开发并准备部署到生产环境,可以使用以下命令将应用发布为可部署的文件: - -dotnet publish --configuration Release --output ./publish -然后,将生成的文件上传到服务器,或者通过 Docker 等工具进行部署 \ No newline at end of file diff --git "a/\346\235\250\346\210\220\350\261\252/20241111-\345\270\270\350\247\201\346\214\207\344\273\244.md" "b/\346\235\250\346\210\220\350\261\252/20241111-\345\270\270\350\247\201\346\214\207\344\273\244.md" new file mode 100644 index 0000000..f5b8826 --- /dev/null +++ "b/\346\235\250\346\210\220\350\261\252/20241111-\345\270\270\350\247\201\346\214\207\344\273\244.md" @@ -0,0 +1,45 @@ +1. 查看当前目录下的文件和文件夹:`ls` + +2. 查看当前路径:`pwd` + +3. 创建一个新的文件夹 `mkdir [文件夹名]` + +4. 删除一个文件夹 `rmdir [文件夹名](注意:只能删除空文件夹)` + +5. 移动或重命名文件/文件夹 `mv [原路径] [新路径]` + +6. 复制文件 `cp [源文件] [目标路径]` + +7. 删除文件 `rm [文件名]` + +8. 查看文件内容 `cat [文件名]` + +9. 分页查看文件内容 `less [文件名]` + +10. 查找文件 `find / -name [文件名]` + +11. 查看文件权限 `ls -l [文件或目录名]` + +12. 改变文件权限 `chmod [权限] [文件或目录名]` + +13. 改变文件所有者 `chown [新所有者] [文件或目录名]` + +14. 查看当前登录用户 `whoami` + +15. 查看系统运行时间和平均负载 `uptime` + +16. 查看磁盘使用情况 `df -h` + +17. 查看当前路径下的隐藏文件 `ls -a` + +18. 创建一个空文件 `touch [文件名]` + +19. 查看当前系统的内核版本 `uname -r` + +20. 查看网络连接状态 `ifconfig 或 ip addr` + +21. 安装一个软件包 `sudo apt-get install [软件包名]` + +22. 卸载一个软件包 `sudo apt-get remove [软件包名]` + +23. 更新软件包列表 `sudo apt-get update` \ No newline at end of file diff --git "a/\346\235\250\346\210\220\350\261\252/20241113-mvc\351\241\271\347\233\256.md" "b/\346\235\250\346\210\220\350\261\252/20241113-mvc\351\241\271\347\233\256.md" new file mode 100644 index 0000000..20b62b7 --- /dev/null +++ "b/\346\235\250\346\210\220\350\261\252/20241113-mvc\351\241\271\347\233\256.md" @@ -0,0 +1,22 @@ +1. 安装 .NET SDK(如果尚未安装)可以使用以下命令检查是否已安装:`dotnet --version` + +2. 创建一个新的 MVC 项目: +``` +dotnet new mvc -n MyMvcApp +``` + +3. 进入项目目录,运行项目 +``` +cd MyMvcApp +dotnet run +``` + +4. 创建解决方案和类库并添加 +``` +dotnet new sln -n ComprehensiveSolution +dotnet sln ComprehensiveSolution.sln add MyMvcApp + +dotnet new classlib -n ClassLibrary +dotnet sln ComprehensiveSolution.sln add ClassLibrary +``` + diff --git "a/\346\235\250\346\210\220\350\261\252/20241113-\345\260\206.Net\345\272\224\347\224\250\351\203\250\347\275\262\345\270\246\346\234\215\345\212\241\345\231\250.md" "b/\346\235\250\346\210\220\350\261\252/20241113-\345\260\206.Net\345\272\224\347\224\250\351\203\250\347\275\262\345\270\246\346\234\215\345\212\241\345\231\250.md" deleted file mode 100644 index 99deb60..0000000 --- "a/\346\235\250\346\210\220\350\261\252/20241113-\345\260\206.Net\345\272\224\347\224\250\351\203\250\347\275\262\345\270\246\346\234\215\345\212\241\345\231\250.md" +++ /dev/null @@ -1,165 +0,0 @@ -1. 准备工作 -在开始之前,请确保你的服务器上已经安装了以下内容: - -.NET SDK 和运行时:确保服务器上安装了 .NET 的运行时,至少需要安装与项目相匹配的版本(如 .NET 7 或 .NET 8)。 -Nginx:用作反向代理,确保服务器上已经安装 Nginx。 -安装 .NET SDK 和运行时 -如果你的服务器还没有安装 .NET,可以使用以下命令进行安装(以 Debian 为例): - -参考微软官方.NET文档 - -在 Debian 上安装 .NET - .NET | Microsoft Learn - -Debian 12 -使用 APT 进行安装可通过几个命令来完成。 安装 .NET 之前,请运行以下命令,将 Microsoft 包签名密钥添加到受信任密钥列表,并添加包存储库。 - -打开终端并运行以下命令: - -wget https://packages.microsoft.com/config/debian/11/packages-microsoft-prod.deb -O packages-microsoft-prod.deb -sudo dpkg -i packages-microsoft-prod.deb -rm packages-microsoft-prod.deb -安装 SDK -.NET SDK 使你可以通过 .NET 开发应用。 如果安装 .NET SDK,则无需安装相应的运行时。 若要安装 .NET SDK,请运行以下命令: - -sudo apt-get update && \ - sudo apt-get install -y dotnet-sdk-8.0 -若要了解如何使用 .NET CLI,请参阅 .NET CLI 概述。 - -安装运行时 -通过 ASP.NET Core 运行时,可以运行使用 .NET 开发且未提供运行时的应用。 以下命令将安装 ASP.NET Core 运行时,这是与 .NET 最兼容的运行时。 在终端中,运行以下命令: - -sudo apt-get update && \ - sudo apt-get install -y aspnetcore-runtime-8.0 -作为 ASP.NET Core 运行时的一种替代方法,你可以安装不包含 ASP.NET Core 支持的 .NET 运行时:将上一命令中的 aspnetcore-runtime-8.0 替换为 dotnet-runtime-8.0: - -sudo apt-get install -y dotnet-runtime-8.0 -若要了解如何使用 .NET CLI,请参阅 .NET CLI 概述。 - -检查版本 -使用命令,如果有返回说明安装成功 - -dotnet --version -安装 Nginx(已安装的话省略) -可以使用以下命令在 Debian 上安装 Nginx: - -sudo apt update -sudo apt install nginx -安装完成后,你可以使用以下命令检查 Nginx 是否正常启动: - -sudo systemctl start nginx -sudo systemctl enable nginx -2. 发布 .NET 应用 -一般来说使用以下命令就可以,如需更多指定选项请使用第二个 - -dotnet publish -首先,使用 dotnet publish 命令将应用程序发布为可以在生产环境中运行的文件。 - -dotnet publish --configuration Release --output ./publish -说明: ---configuration Release:指定使用发布模式,这会优化项目并去掉调试信息。 ---output ./publish:指定发布文件输出的目录。 -发布完成后,生成的文件会放在 ./publish 目录中。这些文件包括所有的依赖项、程序集和可执行文件。 - -3. 上传应用到服务器 -使用 scp 或任何文件传输工具,将发布的文件上传到服务器。例如,你可以使用 scp 命令将文件夹上传到服务器的 /var/www/myapp 目录: - -scp -r ./publish/* user@your_server_ip:/var/www/myapp -说明: -user 是服务器的用户名,your_server_ip 是你的服务器的 IP 地址。 -上传的文件将存放在服务器的 /var/www/myapp 目录中。 -4. 配置 .NET 应用为后台服务 (根据需求可选) -为了确保应用在后台运行,可以使用 systemd 来管理 .NET 应用。首先,我们需要创建一个 systemd 服务文件。 - -创建一个新的 systemd 服务文件: -sudo nano /etc/systemd/system/myapp.service -在文件中添加以下内容: -[Unit] -Description=My .NET Application -After=network.target - -[Service] -WorkingDirectory=/var/www/myapp -ExecStart=/usr/bin/dotnet /var/www/myapp/MyApp.dll -Restart=always -# Uncomment to allow for environment variable configuration (optional) -# Environment=ASPNETCORE_ENVIRONMENT=Production -User=www-data -Group=www-data -# Uncomment to set a specific user/group for your application - -[Install] -WantedBy=multi-user.target -解释: -WorkingDirectory:指定应用程序所在的目录。 -ExecStart:指定启动应用的命令,这里假设应用的入口文件是 MyApp.dll。 -Restart=always:应用崩溃时自动重启。 -User=www-data 和 Group=www-data:指定运行应用的用户和组,通常 Web 服务器的用户是 www-data。 -保存并关闭文件后,重新加载 systemd 配置: -sudo systemctl daemon-reload -启动应用并设置为开机自启动: -sudo systemctl start myapp -sudo systemctl enable myapp -使用以下命令检查应用状态: -sudo systemctl status myapp -说明: -现在,.NET 应用会在后台作为服务运行,并会在服务器重启后自动启动。 -5. 配置 Nginx 反向代理 -Nginx 将用作反向代理服务器,将外部请求转发给你在后台运行的 .NET 应用。首先,编辑 Nginx 配置文件: - -sudo nano /etc/nginx/sites-available/myapp -添加以下配置: - -简略配置 - -server { - listen 80; # 监听80端口 - server_name 你的域名或者IP; - - location / { - proxy_pass http://localhost:5000; # 假设你的 .NET 应用监听在 5000 端口 - } -} -详细配置 - -server { - listen 80; # 监听80端口 - server_name 你的域名或者IP; - - location / { - proxy_pass http://localhost:5000; # 假设你的 .NET 应用监听在 5000 端口 - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto $scheme; - } -} -解释: -listen 80;:Nginx 会监听 80 端口(即 HTTP)。 -server_name your_domain_or_ip;:这里替换为你的域名或者 IP 地址。 -proxy_pass http://localhost:5000;:将请求转发到本地 5000 端口(假设你的 .NET 应用在该端口上监听)。 -6. 测试 Nginx 配置并重新加载 -测试 Nginx 配置是否正确: - -sudo nginx -t -如果没有错误,重新加载 Nginx 配置: - -sudo systemctl reload nginx -7. 防火墙设置(如果安装了ufw防火墙) -如果服务器上启用了防火墙,确保 80 端口是开放的: - -sudo ufw allow 'Nginx Full' -这样,Nginx 将开始接受外部 HTTP 请求。 - -ufw 防火墙配置解释: -UFW(Uncomplicated Firewall) 是一个用于配置和管理 Linux 防火墙的工具,它基于 iptables,提供了一个简化的命令行接口。 -Nginx Full 是 UFW 防火墙的一个预定义规则,允许 HTTP 和 HTTPS 流量。具体包括: -80/tcp(HTTP 默认端口) -443/tcp(HTTPS 默认端口) -8. 完成部署 -现在,.NET 应用已经通过 Nginx 反向代理部署到服务器上,运行后就可以通过域名或 IP 地址访问。 - -总结: -我们首先将 .NET 应用发布并上传到服务器。 -使用 systemd 配置后台运行应用,确保应用在服务器重启后能自动启动。 -配置 Nginx 作为反向代理,将外部请求转发给 .NET 应用。 -运行并尝试访问。 \ No newline at end of file diff --git "a/\346\235\250\346\210\220\350\261\252/20241114-mvc\351\241\271\347\233\256\345\237\272\347\241\200\347\273\223\346\236\204.md" "b/\346\235\250\346\210\220\350\261\252/20241114-mvc\351\241\271\347\233\256\345\237\272\347\241\200\347\273\223\346\236\204.md" new file mode 100644 index 0000000..157df83 --- /dev/null +++ "b/\346\235\250\346\210\220\350\261\252/20241114-mvc\351\241\271\347\233\256\345\237\272\347\241\200\347\273\223\346\236\204.md" @@ -0,0 +1,67 @@ +1. 解决方案文件 (.sln): + + + 这是Visual Studio使用的解决方案文件,它包含项目间的关系和配置。 + +2. 项目文件 (.csproj): + + + 这是项目的项目文件,包含了项目的所有配置和依赖项。 +3. Program.cs: + + + 包含程序的入口点,定义了如何配置服务和启动主机。 + +4. Startup.cs: + + + 包含配置服务和请求管道的代码。请求管道定义了请求是如何被处理的。 + +5. Controllers: + + + 控制器文件夹包含所有的控制器类,这些类处理用户请求并返回视图或数据。 + +6. Views: + + + 视图文件夹包含所有的视图文件,这些文件负责呈现HTML内容给用户。 + +7. Models: + + + 模型文件夹包含所有的模型类,这些类代表数据和业务逻辑。 + +8. wwwroot: + + + 包含静态文件,如JavaScript、CSS、图片和客户端视图文件。 + +9. Data: + + + (可选)包含数据访问代码,如Entity Framework Core的 + DbContext。 + +10. Migrations: + + + (可选)包含Entity Framework Core的数据库迁移文件。 + +11. appsettings.json: + + + 包含配置设置,如数据库连接字符串和其他应用设置。 + +12. Controllers: + + + 控制器文件夹包含控制器类,这些类包含处理HTTP请求的方法(Action)。 + +13. Views: + + + 视图文件夹包含Razor视图文件,这些文件定义了HTML结构和服务器端代码。 + +14. wwwroot: + + + 网站的根目录,用于存放静态文件。 + +15. Dependencies: + + + 包含项目依赖的库文件。 + +16. obj: + + + 包含编译过程中生成的中间文件。 + +17. bin: + + + 包含编译后的程序集和运行时文件。 \ No newline at end of file diff --git "a/\346\235\250\346\210\220\350\261\252/20241114-\351\205\215\347\275\256\347\216\257\345\242\203\345\217\230\351\207\217.md" "b/\346\235\250\346\210\220\350\261\252/20241114-\351\205\215\347\275\256\347\216\257\345\242\203\345\217\230\351\207\217.md" deleted file mode 100644 index 2b6a483..0000000 --- "a/\346\235\250\346\210\220\350\261\252/20241114-\351\205\215\347\275\256\347\216\257\345\242\203\345\217\230\351\207\217.md" +++ /dev/null @@ -1,4 +0,0 @@ -+ DOTNET_HOME:配置 .NET SDK 安装路径,便于其他程序识别 .NET 环境。 -+ PATH:将 .NET SDK 路径添加到 PATH 环境变量中,确保可以在命令行中运行 dotnet 命令。 -+ 命令行设置:可以通过 setx 或 PowerShell 设置环境变量,确保 .NET 环境配置永久生效。 -+ 验证配置:通过 dotnet --version 命令验证环境变量是否配置正确。 \ No newline at end of file diff --git "a/\346\235\250\346\210\220\350\261\252/20241118-mvc\345\237\272\347\241\200.md" "b/\346\235\250\346\210\220\350\261\252/20241118-mvc\345\237\272\347\241\200.md" new file mode 100644 index 0000000..9663dc3 --- /dev/null +++ "b/\346\235\250\346\210\220\350\261\252/20241118-mvc\345\237\272\347\241\200.md" @@ -0,0 +1,69 @@ +1. 在默认控制器(Home)下,新增一个方法,同时为其创建对应视图以显示这个视图 +```cs +//在Controllers文件夹下的HomeController.cs中添加: +public IActionResult Ok() +{ + return View(); +} +//然后在Views/Home目录下创建Ok.cshtml视图文件 +``` + +2. 创建一个新的控制器并使用该方法返回一个视图 +```cs +//在Controllers文件夹中创建BlogsController.cs并添加 +using Microsoft.AspNetCore.Mvc; + + +namespace MyMvcProject.Controllers; + +public class BlogsController : Controller +{ + +public IActionResult Index() +{ + ViewBag.Message = "神级预判"; + return View(); +} + +} +//也需在Views/Blogs目录下创建Index.cshtml视图文件 +``` + +3. 创建可以接受参数的方法 +```cs +//在新建的ProductsController.cs中添加 +using Microsoft.AspNetCore.Mvc; + + +namespace MyMvcProject.Controllers; + +public class ProductsController : Controller +{ + +public IActionResult Edit(int id){ + ViewBag.Id = id; + return View(); +} +public IActionResult Create(Students stu){ + ViewBag.Name = stu.Name; + return View(); +} +} + +public class Students{ + public string Name {get; set;} = "ikun"; + public string Age {get; set;} = "18"; + public string height {get; set;} = "250"; +} +``` ++ 在Views/Products目录下创建Edit.cshtml视图文件,并添加: +```html +

@ViewBag.Id

+``` + ++ Views/Products目录下创建Create.cshtml视图文件,并添加: +```html +

@ViewBag.Name

+``` + + diff --git "a/\346\235\250\346\210\220\350\261\252/20241120-httppost.md" "b/\346\235\250\346\210\220\350\261\252/20241120-httppost.md" new file mode 100644 index 0000000..89a0919 --- /dev/null +++ "b/\346\235\250\346\210\220\350\261\252/20241120-httppost.md" @@ -0,0 +1,65 @@ +### 如何创建处理HTTPPOST请求的方法 +1. 创建模型(Model) +你定义了一个MyModel类,它包含了两个属性:Name和Email。这个模型将用于表单数据的绑定。 +```csharp +public class MyModel +{ + public string Name { get; set; } + public string Email { get; set; } +} +``` +2. 创建控制器(Controller) +你创建了一个名为MyController的控制器,并在其中添加了一个处理POST请求的方法Submit。 + +```csharp +public class MyController : Controller +{ + [HttpPost] + public IActionResult Submit(MyModel model) + { + if (ModelState.IsValid) + { + // 处理模型数据,比如保存到数据库 + // 返回一个结果,比如重定向到另一个页面 + return RedirectToAction("Success"); + } + else + { + // 模型验证失败,返回视图并附带错误信息 + return View(model); + } + } +} +``` +3. 创建视图(View) +你为Submit方法创建了一个Razor视图Submit.cshtml,用户可以通过这个视图提交表单。 + +```html + +@model MyModel + +
+ + + + + + + + + +
+``` +4. 配置路由 +你提到了默认的路由配置,这确保了请求能够正确地映射到控制器和动作方法。 + +```csharp +routes.MapRoute( + name: "default", + template: "{controller=Home}/{action=Index}/{id?}"); +``` +注: +模型验证:在Submit方法中,ModelState.IsValid检查模型是否通过了验证。如果验证失败,用户会看到错误信息,并且表单会重新显示。 +数据保存:在验证通过后,你可以在Submit方法中添加代码来保存模型数据到数据库。 +重定向:使用RedirectToAction方法重定向到另一个页面,如“Success”页面,这可以防止表单提交后的页面刷新导致数据再次提交。 +视图位置:确保视图文件Submit.cshtml位于Views/My目录下,因为ASP.NET Core MVC默认会根据控制器名称查找对应的视图文件夹。 \ No newline at end of file -- Gitee