# MvcLearningDemo **Repository Path**: erick1999/mvc-learning-demo ## Basic Information - **Project Name**: MvcLearningDemo - **Description**: Mvc学习Demo,包含MVC大部分的基础语法以及业务逻辑 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-19 - **Last Updated**: 2026-07-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MvcLearningDemo - ASP.NET Core MVC 学习项目 本项目是一个基于 **ASP.NET Core MVC** 的完整 Web 应用程序示例,旨在帮助开发者理解和掌握 MVC(Model-View-Controller)架构模式及其核心概念。项目采用了典型的分层架构,包含了仓储模式(Repository Pattern)、服务层(Services)、过滤器(Filters)以及现代前端技术(Bootstrap 5 + jQuery)的集成。 ### 项目特点 * **分层架构**:清晰分离控制器(Controller)、业务逻辑(Services)和数据访问(Repository)。 * **无需数据库配置**:使用内存中的 Mock 仓储(MockRepository),运行前无需配置 SQL Server,打开即可预览。 * **数据验证**:内置服务器端和客户端验证(jQuery Validation),包含常见的数据注解(Data Annotations)示例。 * **完整功能演示**: * **产品管理系统**:包含搜索、分类筛选、增删改查(CRUD)。 * **待办事项(Todo)**:展示带优先级的任务管理,支持切换状态与统计。 * **语法指南**:内置 MVC/Razor 语法学习模块。 * **高级特性**:包含自定义 Action 过滤器(Filter)、视图组件(ViewComponents)和标签帮助程序(TagHelpers)的实际应用。 ### 技术栈 * **后端框架**:.NET 6/7/8 (ASP.NET Core MVC) * **编程语言**:C# * **前端框架**:Bootstrap 5 * **脚本库**:jQuery & jQuery Validation Unobtrusive * **依赖注入**:原生 DI 容器 ### 快速开始 1. **环境准备**:确保已安装 [.NET SDK](https://dotnet.microsoft.com/download) 和 Visual Studio 2022(或 VS Code)。 2. **克隆与运行**: ```bash git clone https://gitee.com/erick1999/mvc-learning-demo.git cd mvc-learning-demo # 使用 Visual Studio 打开 MvcLearningDemo.sln 或使用命令行运行 dotnet run ``` 3. **访问**:打开浏览器访问 `https://localhost:7000` (端口可能略有不同,请查看控制台输出)。 ### 核心功能模块说明 #### 1. 产品管理 (Product Management) 通过 `ProductController` 演示了完整的 CRUD 操作。 * **数据模型**:包含产品名称、价格、库存、分类等字段,并使用了 `[Required]`, `[Range]`, `[StringLength]` 等数据验证注解。 * **搜索功能**:支持按关键词和分类 ID 进行筛选。 * **视图组件**:使用了 `ProductStatsViewComponent` 在侧边栏或指定区域显示产品总数、平均价格等统计数据。 #### 2. 待办事项 (Todo List) 通过 `TodoController` 演示了任务管理逻辑。 * **统计面板**:实时显示总数、完成数和待办数。 * **状态管理**:支持一键切换完成状态(Toggle)。 * **优先级**:演示了 `Range` 注解在 UI 中的呈现。 #### 3. 语法指南 (Syntax Guide) `SyntaxGuideController` 是一个专门的教育性控制器,用于展示 Razor 视图引擎的各种语法技巧,帮助开发者理解 View 与 Model 的交互。 #### 4. 架构模式解析 * **仓储层 (Repository Layer)**: * 定义了 `IRepository` 接口。 * 提供了通用的 `MockRepository` 实现,负责内存中的数据增删改查,模拟了数据库操作。 * **服务层 (Service Layer)**: * `ProductService` 和 `TodoService` 处理具体的业务逻辑,解耦了控制器与数据访问逻辑。 * **过滤器 (Filters)**: * `LogActionFilter` 展示了如何在 Action 执行前后记录日志,体现了 AOP(面向切面编程)的思想。 * **标签帮助程序 (TagHelpers)**: * 自定义了 `GreetingTagHelper`,演示了如何创建自定义 HTML 标签(如 ``)。 ### 项目结构概览 * `Controllers/`:处理 HTTP 请求。 * `Models/`:定义数据实体和视图模型。 * `Services/`:封装业务逻辑。 * `Repository/`:定义数据访问接口及模拟实现。 * `Views/`:Razor 视图文件。 * `Filters/`:自定义 MVC 过滤器。 * `TagHelpers/`:自定义 HTML 扩展。