# Source Generator Demo **Repository Path**: one996/source-generator-demo ## Basic Information - **Project Name**: Source Generator Demo - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-19 - **Last Updated**: 2025-07-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 源代码生成器演示 这是一个使用源代码生成器的 ASP.NET Core MVC 项目的演示。 ## 项目结构 该项目包含两个主要项目: - `MvcDemo.SourceGenerator`: 一个源代码生成器项目,它实现了 `ISourceGenerator` 接口。 - `MvcDemo`: 一个 ASP.NET Core MVC 项目,它包含控制器、模型、视图和静态文件。 ## 源代码生成器 `MvcDemo.SourceGenerator/CrudControllerGenerator.cs` 文件中实现的 `CrudControllerGenerator` 类负责生成 CRUD(创建、读取、更新、删除)控制器的源代码。此生成器遍历模型类并为每个类生成相应的控制器代码。 ## 模型 `MvcDemo/Models` 文件夹包含以下模型类: - `Product`: 表示一个产品,具有 `Id`, `Name`, `Price`, `Stock`, 和 `CreatedAt` 属性。 - `User`: 表示一个用户,具有 `Id`, `UserName`, `Email`, `Password`, 和 `RegisteredAt` 属性。 - `ErrorViewModel`: 用于显示错误信息的模型,具有 `RequestId` 属性。 ## 控制器 `HomeController` 类位于 `MvcDemo/Controllers` 文件夹中,实现了几个方法: - `Index()`: 返回主页视图。 - `Privacy()`: 返回隐私政策视图。 - `Product()`: 返回产品视图。 - `Error()`: 返回错误视图,并接受一个 `ErrorViewModel` 实例。 ## 静态文件 `wwwroot` 文件夹包含应用程序的静态文件,包括: - **CSS**: 使用了 Bootstrap 的多个 CSS 文件,包括普通、响应式(rtl)、工具类(utilities)等样式。 - **JavaScript**: 包含了 Bootstrap 的捆绑 JavaScript 文件。 - **第三方库**: 包括 jQuery, jQuery验证, 和 jQuery验证无干扰(validation-unobtrusive)的文件。 ## 视图 `Views` 文件夹包含多个 `.cshtml` 文件,这些文件是 Razor 视图模板。其中包括: - Home 文件夹下的 `Index`, `Privacy`, `Product` 视图。 - Shared 文件夹下的 `Error`, `_Layout`, `_ValidationScriptsPartial`, 和 `_ViewImports` 文件。 - `_ViewStart` 文件定义了视图的起始代码。 ## 设置和运行 要运行这个项目,你需要: 1. 安装 .NET SDK。 2. 从命令行运行 `dotnet run` 命令在 `MvcDemo` 项目目录中。 3. 浏览至 `https://localhost:5001` 或 `http://localhost:5000`(根据你的 launchSettings.json 文件中的设置)。 ## 使用 该项目演示了如何使用源代码生成器来生成控制器代码。它还展示了如何在 ASP.NET Core MVC 项目中使用 Bootstrap 和 jQuery。 ## 贡献 请按照标准的开源贡献流程来贡献代码。确保你的拉取请求有明确的主题和描述,并且遵循项目编码规范。 ## 许可证 该项目使用 MIT 许可证。详细信息可以在各组件的相应 LICENSE 文件中找到。