diff --git "a/20241111-\345\210\233\345\273\272MVC\346\226\207\344\273\266.md" "b/20241111-\345\210\233\345\273\272MVC\346\226\207\344\273\266.md" new file mode 100644 index 0000000000000000000000000000000000000000..29d223d503aaaadae28ac564e5e9a65dc3031a5a --- /dev/null +++ "b/20241111-\345\210\233\345\273\272MVC\346\226\207\344\273\266.md" @@ -0,0 +1,307 @@ +在Visual Studio Code (VSCode) 中使用命令行界面(CMD)创建ASP.NET MVC项目的文件 + +```markdown +# ASP.NET MVC 文件创建指南(使用 VSCode 和 CMD) + +## 环境准备 +确保你已经安装了以下工具: +- Visual Studio Code (VSCode) +- .NET Core SDK +- Git Bash 或 CMD + +## 创建项目 +首先,在命令行界面中创建一个新的ASP.NET MVC项目。 + +```bash +# 使用 .NET CLI 创建一个新的 MVC 项目 +dotnet new mvc -n MyMVCApp +cd MyMVCApp +``` + +## 控制器(Controllers) +控制器处理用户请求并返回视图或数据。 + +### 创建控制器 +```bash +# 创建一个新的控制器 +dotnet new mvc -o Controllers/Home +``` + +### 控制器示例代码 +```csharp +// 在 Controllers 文件夹中创建一个新的控制器文件 Home.cs +using Microsoft.AspNetCore.Mvc; + +namespace MyMVCApp.Controllers +{ + public class HomeController : Controller + { + public IActionResult Index() + { + return View(); + } + } +} +``` + +## 视图(Views) +视图负责显示数据,通常使用Razor语法。 + +```bash +# 创建一个新的视图文件 +mkdir -p Views/Home +code Views/Home/Index.cshtml +``` + +### 视图示例代码 +```html +@{ + ViewData["Title"] = "Home Page"; +} + +

Welcome to the Home Page

+``` + +## 模型(Models) +模型代表应用程序的数据结构。 + +### 创建模型 +```bash +# 创建一个新的模型文件 +mkdir -p Models +code Models/Product.cs +``` + +### 模型示例代码 +```csharp +namespace MyMVCApp.Models +{ + public class Product + { + public int Id { get; set; } + public string Name { get; set; } + public decimal Price { get; set; } + } +} +``` + +## 辅助方法(Helpers) +辅助方法用于在视图中生成HTML。 + +### 创建辅助方法 +```bash +# 创建一个新的辅助方法文件 +mkdir -p Helpers +code Helpers/HtmlExtensions.cs +``` + +### 辅助方法示例代码 +```csharp +using Microsoft.AspNetCore.Html; +using Microsoft.AspNetCore.Mvc.ViewFeatures; +using Microsoft.AspNetCore.Razor.TagHelpers; + +namespace MyMVCApp.Helpers +{ + public static class HtmlExtensions + { + public static IHtmlContent MyCustomHelper(this IHtmlHelper htmlHelper, string message) + { + return new HtmlString($"
{message}
"); + } + } +} +``` + +## 过滤器(Filters) +过滤器用于在执行控制器动作之前或之后执行代码。 + +### 创建过滤器 +```bash +# 创建一个新的过滤器文件 +mkdir -p Filters +code Filters/MyActionFilter.cs +``` + +### 过滤器示例代码 +```csharp +using Microsoft.AspNetCore.Mvc.Filters; + +namespace MyMVCApp.Filters +{ + public class MyActionFilter : IActionFilter + { + public void OnActionExecuting(ActionExecutingContext context) + { + // 执行前的操作 + } + + public void OnActionExecuted(ActionExecutedContext context) + { + // 执行后的操作 + } + } +} +``` + +## 路由(Routing) +路由配置通常在 `Startup.cs` 文件中设置。 + +### 配置路由 +```csharp +// 在 Startup.cs 文件中配置路由 +public void ConfigureServices(IServiceCollection services) +{ + services.AddControllersWithViews(); +} + +public void Configure(IApplicationBuilder app, IWebHostEnvironment env) +{ + if (env.IsDevelopment()) + { + app.UseDeveloperExceptionPage(); + } + else + { + app.UseExceptionHandler("/Home/Error"); + app.UseHsts(); + } + + app.UseHttpsRedirection(); + app.UseStaticFiles(); + + app.UseRouting(); + + app.UseAuthorization(); + + app.UseEndpoints(endpoints => + { + endpoints.MapControllerRoute( + name: "default", + pattern: "{controller=Home}/{action=Index}/{id?}"); + }); +} +``` + +## 布局(Layouts) +布局定义了视图的通用结构。 + +### 创建布局 +```bash +# 创建一个新的布局文件 +mkdir -p Views/Shared +code Views/Shared/_Layout.cshtml +``` + +### 布局示例代码 +```html + + + + + @ViewData["Title"] - My MVC App + + +
+ +
+
+ @RenderBody() +
+ + + +``` + +## 部分视图(Partial Views) +部分视图是视图的一部分,可以被多个视图重用。 + +### 创建部分视图 +```bash +# 创建一个新的部分视图文件 +mkdir -p Views/Shared +code Views/Shared/_MyPartialView.cshtml +``` + +### 部分视图示例代码 +```html +@model MyMVCApp.Models.Product + +
+

@Model.Name

+

@Model.Price

+
+``` + +## 视图组件(View Components) +视图组件是可重用的视图渲染逻辑。 + +### 创建视图组件 +```bash +# 创建一个新的视图组件文件 +mkdir -p ViewComponents +code ViewComponents/MyViewComponent.cs +``` + +### 视图组件示例代码 +```csharp +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.ViewComponents; + +namespace MyMVCApp.ViewComponents +{ + public class MyViewComponent : ViewComponent + { + public IViewComponentResult Invoke() + { + var model = new Product { Name = "Sample Product", Price = 19.99m }; + return View(model); + } + } +} +``` + +## 服务(Services) +服务通常用于处理业务逻辑。 + +### 创建服务 +```bash +# 创建一个新的服务文件 +mkdir -p Services +code Services/IProductService.cs +``` + +### 服务接口示例代码 +```csharp +namespace MyMVCApp.Services +{ + public interface IProductService + { + IEnumerable GetProducts(); + } +} +``` + +### 服务实现示例代码 +```csharp +using MyMVCApp.Models; +using System.Collections.Generic; + +namespace MyMVCApp.Services +{ + public class ProductService : IProductService + { + public IEnumerable GetProducts() + { + return new List + { + new Product { Id = 1, Name = "Product 1", Price = 9.99m }, + new Product { Id = 2, Name = "Product 2", Price = 19.99m } + }; + } + } +} \ No newline at end of file diff --git "a/20241113-\345\210\233\345\273\272ASP.NET Core MVC\351\241\271\347\233\256\346\255\245\351\252\244.md" "b/20241113-\345\210\233\345\273\272ASP.NET Core MVC\351\241\271\347\233\256\346\255\245\351\252\244.md" new file mode 100644 index 0000000000000000000000000000000000000000..efec629f894c59309b4a5ab9a2f7930324fc9dc6 --- /dev/null +++ "b/20241113-\345\210\233\345\273\272ASP.NET Core MVC\351\241\271\347\233\256\346\255\245\351\252\244.md" @@ -0,0 +1,61 @@ +# 使用`dotnet`命令行工具创建一个ASP.NET Core MVC项目并运行它的详细步骤 + +### 步骤 1: 安装.NET SDK +在开始之前,请确保你已经安装了.NET SDK。你可以从[.NET官网](https://dotnet.microsoft.com/download)下载并安装它。 + +### 步骤 2: 打开命令行终端 +打开你的命令行终端(例如:CMD、PowerShell、Terminal等)。 + +### 步骤 3: 创建项目目录 +你可以手动创建一个目录,或者使用命令行来创建: +```shell +mkdir MyMvcProject +cd MyMvcProject +``` +这里,`mkdir`命令创建了一个名为`MyMvcProject`的目录,`cd`命令将当前目录更改为新创建的目录。 + +### 步骤 4: 使用`dotnet new`命令创建MVC项目 +在项目目录中,运行以下命令来创建一个新的MVC项目: +```shell +dotnet new mvc -n MyMvcApp +``` +- `dotnet new`:这是创建新项目的命令。 +- `mvc`:这指定了项目模板类型,即MVC。 +- `-n MyMvcApp`:这为项目指定了一个名称,`-n`是`--name`的缩写。 + +### 步骤 5: 导航到项目目录 +如果创建项目时没有自动导航到项目目录,你可以使用`cd`命令: +```shell +cd MyMvcApp +``` +这将把你的工作目录更改为新创建的项目目录。 + +### 步骤 6: 恢复依赖项 +在项目目录中,运行以下命令来恢复(下载)项目依赖项: +```shell +dotnet restore +``` +这个命令会根据`.csproj`文件中列出的依赖项,下载并安装所有必要的NuGet包。 + +### 步骤 7: 构建项目 +构建项目以确保所有内容都正确无误: +```shell +dotnet build +``` +这个命令会编译项目并生成可执行文件。 + +### 步骤 8: 运行项目 +最后,运行以下命令来启动MVC应用程序: +```shell +dotnet run +``` +这个命令会启动你的MVC应用,并且默认情况下,它会在`http://localhost:5000`上运行。 + +### 步骤 9: 访问应用程序 +打开你的浏览器,输入`http://localhost:5000`,你将看到你的MVC应用的欢迎页面。 + +### 解释 +- `dotnet new`:这个命令用于创建一个新的项目,它接受一个模板名称和一个项目名称。 +- `dotnet restore`:这个命令用于还原项目文件中指定的依赖项。 +- `dotnet build`:这个命令用于构建项目,它会编译代码并准备可执行文件。 +- `dotnet run`:这个命令用于运行构建的项目,它会自动调用`dotnet build`来确保项目是最新的,然后运行可执行文件。 \ No newline at end of file diff --git "a/20241114-MVC\345\210\235\345\247\213\347\254\224\350\256\260.md" "b/20241114-MVC\345\210\235\345\247\213\347\254\224\350\256\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..84cbc27a9434b8699ddd48fa2dbcb50894159233 --- /dev/null +++ "b/20241114-MVC\345\210\235\345\247\213\347\254\224\350\256\260.md" @@ -0,0 +1,112 @@ +# ASP.NET MVC的初始笔记 + +```markdown +# ASP.NET MVC 初始笔记 + +## 概述 +ASP.NET MVC 是一个用于构建动态网站、Web 应用程序和 Web 服务的框架,它基于模型-视图-控制器(Model-View-Controller)模式。 + +## 核心组件 +- **模型(Model)**:代表应用程序的数据结构,通常包括业务逻辑和数据访问逻辑。 +- **视图(View)**:负责显示数据(即模型),通常是 HTML,但也可以是 JSON、XML 等。 +- **控制器(Controller)**:处理用户输入,调用模型中的数据,并选择视图来显示数据。 + +## 优点 +- 分离关注点:MVC 模式将应用程序逻辑分为三个部分,使得开发和维护更加清晰。 +- 可测试性:由于逻辑的分离,测试变得更加容易。 +- 可扩展性:可以轻松地添加新功能或更改现有功能。 + +## 创建ASP.NET MVC项目 +1. 打开 Visual Studio。 +2. 选择“文件” > “新建” > “项目”。 +3. 在“新建项目”对话框中,选择“Web” > “ASP.NET Web 应用程序”。 +4. 输入项目名称和位置。 +5. 选择 MVC 模板并点击“创建”。 + +## 路由 +ASP.NET MVC 使用路由来映射 URL 到控制器动作。路由配置通常在 `Global.asax` 文件中设置。 + +## 控制器 +控制器是处理用户请求的入口点。每个控制器类包含多个动作方法,每个方法对应一个特定的请求。 + +### 创建控制器 +```csharp +public class HomeController : Controller +{ + public ActionResult Index() + { + return View(); + } + + public ActionResult About() + { + return View(); + } +} +``` + +## 模型 +模型通常由 POCO(Plain Old CLR Objects)类表示,它们包含应用程序的数据和业务逻辑。 + +### 创建模型 +```csharp +public class Product +{ + public int Id { get; set; } + public string Name { get; set; } + public decimal Price { get; set; } +} +``` + +## 视图 +视图是 MVC 架构中的用户界面组件。在 ASP.NET MVC 中,视图通常使用 Razor 语法。 + +### 创建视图 +```html +@model IEnumerable + +@foreach (var item in Model) +{ +
+

@item.Name

+

@item.Price.ToString("C")

+
+} +``` + +## 过滤器 +过滤器用于在执行控制器动作之前或之后执行代码,例如身份验证、日志记录等。 + +### 创建过滤器 +```csharp +public class MyActionFilter : ActionFilterAttribute +{ + public override void OnActionExecuting(ActionExecutingContext filterContext) + { + // 执行前的操作 + } + + public override void OnActionExecuted(ActionExecutedContext filterContext) + { + // 执行后的操作 + } +} +``` + +## 依赖注入 +ASP.NET Core 支持依赖注入(DI),允许将服务添加到请求的依赖注入容器中。 + +### 注册服务 +```csharp +public void ConfigureServices(IServiceCollection services) +{ + services.AddControllersWithViews(); +} +``` + +## 部署 +部署 ASP.NET MVC 应用程序通常涉及将应用程序发布到 Web 服务器,如 IIS。 + +## 总结 +ASP.NET MVC 提供了一个强大且灵活的框架,用于构建企业级 Web 应用程序。通过理解其核心组件和工作流程,开发者可以构建出高效、可维护的 Web 应用程序。 +``` \ No newline at end of file