CMS后端Web框架【免费下载链接】OrchardCoreOrchard Core is an open-source modular and multi-tenant application framework built with ASP.NET Core, and a content management system (CMS) built on top of that framework.项目地址https://gitcode.com/gh_mirrors/or/OrchardCore点击查看免费下载导读本指南基于 Orchard Core 官方文档《Creating a modular ASP.NET Core application》手把手带你用dotnet new代码生成模板创建一套「Web 应用 模块」的最小可运行示例Web 应用负责提供页面布局模块负责注册路由并响应首页请求两者通过 MVC 的 Area 机制天然解耦。读完本文你将掌握ocmvc与ocmodulemvc两个模板的完整使用流程、模块清单Manifest与StartupBase的工作原理、默认{area}/{controller}/{action}路由规则以及如何改写自定义路由并能在 OrchardCore.Mvc.Web 与 OrchardCore.Mvc.HelloWorld 两个仓库示例中找到一一对应的源码证据。你要构建什么你将构建一个与 Orchard Core 自带示例 Hello World 应用类似的模块化 ASP.NET Core MVC 应用程序由两部分组成一个 Web 应用作为宿主项目提供整体页面布局Layout一个模块注册路由并响应首页请求。模块中的控制器、Action 与视图独立存在于模块项目内而页面布局却来自 Web 应用项目——这正是 Orchard Core「模块化」的核心职责分离、按需装配。仓库中与本指南一一对应的参考项目为角色仓库路径Web 应用宿主src/OrchardCore.Mvc.WebHello World 模块src/OrchardCore.Modules/OrchardCore.Mvc.HelloWorld环境准备开始之前你需要具备当前版本的 .NET SDK可从 https://dotnet.microsoft.com/download 下载一个文本编辑器 一个可运行dotnetCLI 命令的终端。创建 Orchard Core 站点与模块创建站点和模块有多种方式官方模板文档见 Code Generation Templates。本文使用 Orchard Core 官方的代码生成模板Code Generation Templates其源码位于 src/Templates/OrchardCore.ProjectTemplates。1. 安装模板在终端中执行以下命令安装最新稳定版模板dotnet new install OrchardCore.ProjectTemplates3.0.1-*[!NOTE] 若想使用main开发分支上的模板请附加预览源dotnet new install OrchardCore.ProjectTemplates3.0.1-* --nuget-source https://nuget.cloudsmith.io/orchardcore/preview/v3/index.json关于稳定版与开发分支版本的选择说明可参考 templates 文档中的dotnet new install OrchardCore.ProjectTemplates3.0.1与3.0.1-*两种安装方式。2. 创建空目录与 Web 应用新建一个名为OrchardCore.Mvc的空文件夹存放所有项目进入该目录后执行dotnet new ocmvc -n OrchardCore.Mvc.Webocmvc即 Orchard Core Mvc Web App 模板的短名称shortName其模板配置定义在 OrchardCore.Templates.Mvc.Web/.template.config.src/template.json。该模板还支持两个可选参数-f|--framework目标框架模板默认值由构建过程注入当前仓库对应net10.0-ov|--orchard-version指定使用的 Orchard Core 包版本。3. 创建 Hello World 模块继续在同一目录执行dotnet new ocmodulemvc -n OrchardCore.Mvc.HelloWorldocmodulemvc即 Orchard Core Mvc Module 模板配置见 OrchardCore.Templates.Mvc.Module/.template.config.src/template.json同样支持-f|--framework与-ov|--orchard-version两个参数。4. 添加项目引用关键步骤[!IMPORTANT] 必须为Web 应用添加指向模块的项目引用否则 Orchard Core 无法发现并加载该模块。dotnet add OrchardCore.Mvc.Web reference OrchardCore.Mvc.HelloWorld这一步的产物在仓库示例中体现为 OrchardCore.Mvc.Web.csproj 中的ProjectReference Include..\OrchardCore.Modules\OrchardCore.Mvc.HelloWorld\OrchardCore.Mvc.HelloWorld.csproj /。5.可选创建解决方案文件若想在 Visual Studio 中以解决方案方式打开可创建.sln并加入两个项目dotnet new sln -n OrchardCore.Mvc dotnet sln add OrchardCore.Mvc.Web\OrchardCore.Mvc.Web.csproj dotnet sln add OrchardCore.Mvc.HelloWorld\OrchardCore.Mvc.HelloWorld.csproj测试运行结果在同时包含两个项目的OrchardCore.Mvc根目录下启动 Web 应用dotnet run --project .\OrchardCore.Mvc.Web\OrchardCore.Mvc.Web.csproj[!NOTE] 若使用的是模板的开发分支启动前先执行dotnet restore .\MySite\MySite.csproj --source https://nuget.cloudsmith.io/orchardcore/preview/v3/index.json应用启动后默认监听以下端口Now listening on: https://localhost:5001 Now listening on: http://localhost:5000 Application started. Press CtrlC to shut down.仓库示例的 launchSettings.json 中同样以http://localhost:5000作为launchUrl。打开浏览器访问https://localhost:5001/OrchardCore.Mvc.HelloWorld/Home/Index页面将显示Hello from OrchardCore.Mvc.HelloWorld。布局来自主 Web 应用项目而控制器、Action 与视图均来自模块项目。这一行为在仓库中可以直接验证布局由 Web 应用的 Views/Shared/_Layout.cshtml 提供其中mainRenderBody()/main渲染模块视图的输出控制器、Action 与视图来自模块的 Controllers/HomeController.cs 与 Views/Home/Index.cshtml。注册自定义路由默认路由规则默认情况下模块内所有路由遵循{area}/{controller}/{action}模式其中{area}就是模块名。因此模块的HomeController.Index默认地址为/OrchardCore.Mvc.HelloWorld/Home/Index改写模块路由以响应首页在模块OrchardCore.Mvc.HelloWorld的Startup.cs中于Configure()方法里添加自定义路由routes.MapAreaControllerRoute( name: Home, areaName: OrchardCore.Mvc.HelloWorld, pattern: , defaults: new { controller Home, action Index } );参数说明参数含义name路由名称用于 URL 生成如Url.RouteUrl/ TagHelper 的asp-routeareaNameArea 名称必须与模块名一致用于隔离不同模块的路由表patternURL 模式空字符串表示匹配站点根路径首页defaults默认路由值指定命中的控制器与 Action这与仓库示例 OrchardCore.Mvc.HelloWorld/Startup.cs 中的实现完全一致。模块的Startup类继承自OrchardCore.Modules.StartupBase其Configure签名接收IApplicationBuilder、IEndpointRouteBuilder与IServiceProvider这正是模块能够向应用注册路由的入口。修改视图内容同时可以把模块Views/Home目录下的Index.cshtml修改为h1Hello World/h1仓库示例的 Index.cshtml 使用了 Bootstrap 卡片样式展示 Hello World 消息你可以按需简化。验证效果重启应用直接访问首页https://localhost:5001即可看到Hello World消息。此时请求https://localhost:5001/OrchardCore.Mvc.HelloWorld/Home/Index与https://localhost:5001/会命中同一个控制器 Action——前者走默认{area}/{controller}/{action}规则后者走自定义的空 pattern 路由。从源码理解模块化机制模块清单Manifest.cs模板生成的模块自带 Manifest.cs它通过特性标记声明「这是一个 Orchard Core 模块」using OrchardCore.Modules.Manifest; [assembly: Module( Name Mvc HelloWorld )]ModuleAttribute是 Orchard Core 识别模块的唯一入口还可以继续补充Author、Website、Version、Description等元数据。详细的特性示例可参考 Code Generation Templates 文档中的ocmodulecms模块清单示例。模块项目为何能被识别为模块模板生成的模块项目OrchardCore.Templates.Mvc.Module.csproj通过引用OrchardCore.Module.Targets包将自身标记为模块在仓库源码中对应 OrchardCore.Module.Targets.csproj其描述明确写道Converts project/library into an OrchardCore Module that can be referenced in OrchardCore modular application并通过打包进包的build\目录下的 props/targets 文件在构建期生效。模块项目还需同时具备SdkMicrosoft.NET.Sdk.Razor与AddRazorSupportForMvctrue/AddRazorSupportForMvc以便编译 Razor 视图FrameworkReference IncludeMicrosoft.AspNetCore.App /。Web 应用如何变成模块化宿主模板生成的 Web 应用OrchardCore.Templates.Mvc.Web.csproj引用OrchardCore.Application.Mvc.Targets包仓库源码 OrchardCore.Application.Mvc.Targets.csproj 将其描述为Converts the application into a modular application and adds Asp.Net MVC pipeline——它聚合了OrchardCore.Application.Targets应用级模块装载与OrchardCore.Mvc.CoreMVC 管道。而 Web 应用的 Program.cs 则是最小化入口var builder WebApplication.CreateBuilder(args); builder.Services .AddOrchardCore() .AddMvc(); var app builder.Build(); if (!app.Environment.IsDevelopment()) { app.UseExceptionHandler(/Error); } app.UseStaticFiles(); app.UseOrchardCore(); await app.RunAsync();其中AddOrchardCore()注册模块系统.AddMvc()引入 ASP.NET Core MVCUseOrchardCore()挂载 Orchard Core 中间件管线。模板生成的 Program.cs 结构与此一致并额外包含了生产环境下的UseHsts()、UseHttpsRedirection()等默认配置。路由、Area 与模块的隔离Orchard Core 将每个模块映射为一个 ASP.NET Core AreaArea 名即模块名。MapAreaControllerRoute在 Area 内部注册路由从而保证不同模块的路由互不干扰同时由于 Area 隔离模块的视图默认渲染在宿主应用的_Layout.cshtml中实现了「模块提供内容、宿主提供外观」的机制。仓库中Startup基类的定义位于 OrchardCore.Modules 命名空间模块与 Web 应用的装配逻辑则在 OrchardCore.Application.Targets 的 targets 文件中完成。总结至此你已成功使用 Orchard Core 创建了一个模块化 ASP.NET Core MVC 应用其中Web 应用作为宿主负责整体布局与 Orchard Core 管线的装配自定义模块负责注册路由、提供控制器与视图并响应首页请求。这套「宿主 模块」的结构是 Orchard Core 框架区别于完整 CMS最典型的用法你可以持续添加更多模块、为每个模块配置独立路由与 Area 隔离从而以标准 ASP.NET Core MVC 的方式构建高度可扩展、可插拔的应用程序。仓库中的可继续探索资源模板源码与配置src/Templates/OrchardCore.ProjectTemplates/content含OrchardCore.Templates.Mvc.Web与OrchardCore.Templates.Mvc.Module两个模板项目完整示例宿主src/OrchardCore.Mvc.Web完整示例模块src/OrchardCore.Modules/OrchardCore.Mvc.HelloWorld模板安装与使用总览src/docs/getting-started/templates/README.md模块标记包src/OrchardCore/OrchardCore.Module.Targets模块化 MVC 应用聚合包src/OrchardCore/OrchardCore.Application.Mvc.Targets赞分享CMS后端Web框架【免费下载链接】OrchardCoreOrchard Core is an open-source modular and multi-tenant application framework built with ASP.NET Core, and a content management system (CMS) built on top of that framework.项目地址https://gitcode.com/gh_mirrors/or/OrchardCore点击查看免费下载相关推荐Orchard Core 自定义模块的创建、定制与安装全指南Orchard Core 自定义模块的创建、定制与安装全指南 本文围绕 Orchard Core CMS 的自定义模块Custom Module展开覆盖从CMS后端Web框架Bicep Registry Modules模块开发实战从零创建自定义模块Bicep Registry Modules模块开发实战从零创建自定义模块 概述 Bicep Registry Modules是微软Azure官方维护的BicIaC云原生Orchard Core Queries 模块实战指南自定义查询源、SQL 查询、Web API 与 GraphQL 集成Orchard Core Queries 模块实战指南自定义查询源、SQL 查询、Web API 与 GraphQL 集成 Orchard Core 的 QuCMS后端Web框架创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考