从 Orchard 中的食谱创建别名

2024-05-31

我想从配方创建以下别名。

这是如何实现的?


我创建了此类来为 Orchard 添加命令,以便从命令行或配方创建新别名:

using Orchard;
using Orchard.Alias;
using Orchard.Commands;
using System;
using Orchard.Environment;
using System.Linq;

namespace Contrib.Foundation.Common.Commands
{
    public class AliasCommands : DefaultOrchardCommandHandler
    {
        private readonly Work<WorkContext> _workContext;
        private readonly IAliasService _aliasService;

        public AliasCommands(Work<WorkContext> workContext, IAliasService aliasService,
            IOrchardServices orchardServices)
        {
            _workContext = workContext;
            _aliasService = aliasService;
            Services = orchardServices;
        }
        public IOrchardServices Services { get; private set; }

        [OrchardSwitch]
        public string AliasPath { get; set; }
        [OrchardSwitch]
        public string RoutePath { get; set; }

        [CommandName("alias add")]
        [CommandHelp("alias add /AliasPath:<alias-path> /RoutePath:<route-path>\r\n\t" + "Add a new alias")]
        [OrchardSwitches("AliasPath,RoutePath")]
        public void Add()
        {
            AliasPath = AliasPath.TrimStart('/', '\\');
            if (String.IsNullOrWhiteSpace(AliasPath))
            {
                AliasPath = "/";
            }
            if (String.IsNullOrWhiteSpace(RoutePath))
            {
                Context.Output.WriteLine(T("Route can't be empty"));
                return;
            }       
            if (CheckAndWarnIfAliasExists(AliasPath))
            {
                Context.Output.WriteLine(T("Alias already exist"));
                return;
            }
            try
            {
                _aliasService.Set(AliasPath, RoutePath, "Custom");
            }
            catch (Exception ex)
            {
                Services.TransactionManager.Cancel();
                Context.Output.WriteLine(T("An error occured while creating the alias {0}: {1}. Please check the values are correct.", AliasPath, ex.Message));
                return;
            }
            Context.Output.WriteLine(T("Alias {0} created.", AliasPath));
        }
        private string GetExistingPathForAlias(string aliasPath)
        {
            var routeValues = _aliasService.Get(aliasPath.TrimStart('/', '\\'));
            if (routeValues == null) return null;

            return _aliasService.LookupVirtualPaths(routeValues, _workContext.Value.HttpContext)
                .Select(vpd => vpd.VirtualPath)
                .FirstOrDefault();
        }
        private bool CheckAndWarnIfAliasExists(string aliasPath)
        {
            var routePath = GetExistingPathForAlias(aliasPath);
            if (routePath == null) return false;

            return true;
        }
    }
}

您可以在像这样的食谱中使用它:

<Command>
alias add /AliasPath:"/" /RoutePath:"mycontroller"
</Command>

将类放入模块中并引用 Orchard.Alias

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 Orchard 中的食谱创建别名 的相关文章

  • 如何访问整个 AutoFac 容器以在 Orchard 中注册依赖项?

    这个问题非常简单 我想访问整体AutoFac容器 以便我可以在其中注册我的依赖项 remark 我不同意继承自IDependency因为在我的项目中 它会导致 两个程序集 的循环引用 我想要做的是使用密钥注册一个组件 并在其他程序集中使用相
  • 编辑缺少内容的链接

    我是果园 CMS 的新手 我已经从以下网站下载了源代码http orchardproject net 我无法找到所提供的屏幕截图中内容周围的编辑链接 我曾在 Sitecore 工作过 现在正在为我的客户寻找新的开源 CMS 此链接是否为我提
  • 自定义 Orchard 导航菜单

    抱歉我问了这么笼统的问题 我正在使用 Orchard CMS 创建一个网站 网站的设计和交互性是关键要求 我有一个固定大小 900 px 宽 的导航菜单 但应该能够调整尽可能多的菜单项 我通过修改 css 手动执行此操作 我使用了一些 jQ
  • 控制器外部的 Orchard 主题属性

    我有一项服务将覆盖响应正文的内容 是否可以在覆盖内容的方法中使用主题 Themed public void forbiddenAlert IHttpContextAccessor Hca overriding response body 不
  • 在 Orchard 中创建/编辑后清空内容项

    我正在使用在 Orchard 中创建 n to n 关系的指南 ocs orchardproject net Documentation Creating 1 n and n n relations 并进行一些细微的修改 虽然示例代码运行良
  • 在 Orchard MVC CMS 中更改数据库连接设置的位置

    我在 Orchard CMS 中建立了一个网站 在选择数据存储设置时 我选择了 使用现有的 SQL Server 或 SQL Express 数据库 代替 使用内置数据存储 SQL Server Compact 它对我来说效果很好 但我想知
  • 负载平衡 Web 服务器上的 Orchard CMS

    我正在考虑在负载平衡服务器上运行 Orchard CMS 两台带有硬件负载平衡器的 Web 服务器和一个 SAN 文件共享 我一直无法找到这方面的任何信息 我想知道是否会存在更新和缓存问题 如果缓存页面 更新是否会传播到其他服务器 我还想知
  • Orchard 根据过滤的下拉选择创建投影或搜索

    我认为 我有一个简单的功能 我试图将其添加到我的 Orchard 1 6 站点 但我找不到任何有关如何执行此操作的教程或说明 我有一个名为 Office 的自定义类型 每个办公室都有一个名为 State 的自定义字段 指示办公室所在的州 实
  • Orchard CMS:注销(注销)确认页面

    当用户注销前端时是否会触发一个事件 如何使用该事件将用户重定向到特定视图或页面 我希望用户在注销后收到一条消息 显示 您已成功注销 与往常一样 使用 Orchard 有不止一种方法可以做到这一点 方法 1 覆盖用户形状 当您注销时 您将被重
  • 我们如何检查动态粘土对象是否具有属性?

    我有一个动态对象 我认为是用 Clay 实现的 它具有两个可能的属性名称之一 我想使用任何可用的属性名称 以下不起作用 dynamic workItemPart item WorkItem is an Orchard ContentMana
  • Orchard CMS 性能

    我已经开始为我的一个网站使用 Orchard CMS 并注意到我的主页的初始加载时间相当长 我没有添加太多可言的内容 所以我所看到的与开箱即用的体验相当接近 我怀疑这与在我的共享主机上使用 Sql 服务器紧凑有关 但还不太了解幕后的内容来确
  • Orchard CMS 完整指南 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我目前正在 Orchard 中开发一个非常简单的网站 但这需要我用主题和内容类型 小部件来扩展它 现在这就是我所了解的 内容类型和小部件
  • Orchard CMS 中的 Work<> 类有什么用?

    简单明了 它的用例是什么Orchard Environment Work lt gt 类定义于Orchard Environment WorkContextModule cs 它可以在几个地方找到 例如 private readonly W
  • orchard cms:如何将媒体选择器字段添加到自定义部分

    我的问题类似于questions 10369967 orchard cms 如何将媒体选择器字段添加到新模块 https stackoverflow com questions 10369967 orchard cms how to add
  • 使用Orchard CMS进行单页面设计

    我有一个客户想要为他的网站进行单页面设计 其中每个 页面 的内容在用户浏览网站时使用 javascript 显示 隐藏 我不确定使用 Orchard 来解决这个问题的最佳方法 一种选择是将所有内容都放在单个页面内容项上 但这样您就无法使用
  • 在 Orchard 中设置唯一的主体类和 ID

    有没有办法在 Orchard 中为每页设置唯一的正文类和 ID 我希望能够在 编辑页面 部分控制这些 例如 主页的正文 ID 为 home 关于页面的正文 ID 为 about 等 并且 如果 about 页面下有子页面 这些页面将具有 a
  • 如何将形状渲染为字符串?

    我正在使用 Orchard 1 6 想要使用主题自定义布局等将视图渲染为字符串 事实上有Orchard cms 渲染形状作为电子邮件模板 https stackoverflow com questions 7061044 orchard c
  • 编辑零件时显示 MediaLibrary Picker 字段

    我在这里错过了一些东西 但我一生都无法弄清楚是什么 我已将 MediaLibraryPickerField 添加到我创建的部分 ContentDefinitionManager AlterPartDefinition typeof Floo
  • 从 Orchard 内的主题渲染图像

    我刚刚选择 Orchard 来构建我的博客 作为创建这个新博客的努力的一部分 我正在创建一个自定义主题 这个自定义主题同时具有 CSS 和图像 我的问题 我的问题基本上可以归结为 如何渲染属于主题一部分的图像 到目前为止我已经尝试过的 我尝
  • 是否可以在 Orchard CMS 中使用标准 ASP.NET MVC Unobtrusive Validation?

    我正在尝试构建一个自定义模块来与 Orchard CMS 集成以实现业务应用程序 虽然 Orchard CMS 是一个 MVC 应用程序 但似乎不可能 或者至少是容易 完成所有可以通过 MVC 开箱即用 完成的事情 我正在尝试对我的观点进行

随机推荐

  • 从备份恢复 PostgreSQL 数据库,没有外键约束问题

    我有一个包含大约 85 个以上表的 postgresql 数据库 我定期使用pg dump 通过 php pgadmin 在复制模式下 备份文件的大小几乎为 10 12 MB 现在我面临的问题是 每当我尝试恢复数据库时 都会出现外键约束问题
  • 我可以在 NHibernate QueryOver 中使用 SQL 函数吗?

    我一直在互联网上搜索 但找不到有关如何使用 nhibernate 3 0 的 queryover 的示例 例如 我想在查询的 where 子句中使用字符串函数 前任 var item Query Where x gt x Name ToLo
  • EULA 接受 Bash 脚本

    我有一个尝试安装垃圾箱的脚本 除了 bin 在 more 中打开 EULA 之外 一切正常 在脚本再次开始并自行完成安装之前 您必须手动 ctrl c 退出此 more 实例 因为这更多的是逃离 shell 所以脚本在打开后不知道要运行什么
  • 为什么我看不到“创建传出 Webhook”链接?

    我按照此页面上的说明进行操作 Microsoft Teams 中的传出 Webhook https learn microsoft com en us microsoftteams platform concepts outgoingweb
  • Grails:SpringSecurity 角色层次结构未按预期工作

    我正在 Grails 2 0 1 中使用 springsecurity 插件 我的角色层次结构和其他 s2 属性如下所示 grails plugins springsecurity userLookup userDomainClassNam
  • Laravel 5 / Codeception 未正确路由

    我正在尝试使用代码接收为控制器函数编写 API 测试用例 但遇到了一个问题 即控制器函数的路由似乎未正确评估 并且评估似乎根据我的不同而不同我的测试用例中有 这是我的测试用例中的代码示例 use ApiTester class Custom
  • 如何仅将网站的特定部分放入 iframe 中?

    我只想将网站的一小部分放入 iframe 中 我该怎么做 通常 当我为网站 假设是雅虎 设置 iframe 时 它 会获取整个网站 假设我只想要网站的一小部分 我该怎么做 是否可以在网站的 iframe 上添加边距 我想在我的网站上放置一个
  • 如何获取属于某个进程的打开句柄的计数?

    您可以使用该程序流程浏览器 http technet microsoft com en us sysinternals bb896653查看正在运行的应用程序有多少个句柄 有没有办法用Delphi代码来获取这个数字 我有兴趣跟踪应用程序本身
  • 阻止特定 URL 进行测试的最佳方法是什么?

    我正在使用 Google Chrome 和 Fiddler 版本 4 4 观察一个网站 该页面正在使用 AJAX 来更新其数据 我想阻止特定的 URL 以测试如果它不起作用会发生什么 阻止 URL 最简单的方法是什么 你希望发生什么 转到自
  • Facebook 登录按钮:应用自定义样式

    我在使用新的 Facebook android sdk 4 时遇到了一个奇怪的问题 对于旧的 sdk 版本 我使用的是
  • self.__dict__.update(**kwargs) 的风格是好是坏?

    在 Python 中 假设我有一些类 Circle 它继承自 Shape Shape 需要 x 和 y 坐标 此外 Circle 需要半径 我希望能够通过执行类似的操作来初始化 Circle c Circle x 1 y 5 r 3 Cir
  • 通过 Excel VBA 保存并关闭 powerpoint

    下面的代码根据定义的名称创建多个图表 然后打开具有这些定义的名称的 powerpoint 文件并转储到图表中 除了最后一部分之外 一切都正常 保存并关闭文件 我已将尝试保存和关闭文件的尝试标记为绿色 任何帮助表示赞赏 Sub Slide19
  • 当我尝试转发电子邮件时,时事通讯无法隐藏 Gmail 上的响应内容

    我正在尝试写一份时事通讯 但当我测试时 我无法隐藏响应式内容GMail On Outlook and Yahoo一切正常 但如果我尝试转发电子邮件 隐藏的内容就会可见 我测试使用 putsmail https putsmail com gt
  • 使用 flash/flex 在客户端硬盘上下载/保存/写入文件

    我想知道如何下载 保存 写入文件我的服务器 to a 客户的计算机使用闪光灯或柔性 我正在寻找的示例可以在http www flexdownloads com http www flexdownloads com Sign up Sign
  • 在 3D 场景中实现“抓取”相机平移工具

    在我的场景中 我有想要 抓取 的地形 然后在移动光标时让相机平移 其高度 视图向量 视野等全部保持不变 因此 最初的 抓取 点将是世界空间中的工作点 我希望在拖动时该点保留在光标下方 我当前的解决方案是获取前一个和当前的屏幕点 取消投影它们
  • 按字符串子字符串的列过滤 Pandas 数据框

    我正在尝试使用列中的字符串值是数据框外部字符串的子字符串的条件来过滤数据框 下面的例子 df a b c hello bye hello reference str hello there output a c 一种方法可能是使用正则表达式
  • 排除 requirejs 模块中所有以 x 开头的内容

    I am 编译 将一些文件放入一个 requirejs 模块中 我有这样的配置 paths lib lib angular lib angular modules name myApp exclude lib jquery lib angu
  • Python 中嵌套列表的排序和分组

    我有以下数据结构 列表的列表 4 21 1 14 2008 10 24 15 42 58 3 22 4 2somename 2008 10 24 15 22 03 5 21 3 19 2008 10 24 15 45 45 6 21 1 1
  • 手动安装开放多语言世界网 (NLTK)

    我正在使用一台只能访问专用网络并且无法从命令行发送指令的计算机 因此 每当我必须安装 Python 包时 我都必须手动安装 我什至不能使用 Pypi 幸运的是 NLTK 允许我手动下载语料库 从here https www nltk org
  • 从 Orchard 中的食谱创建别名

    我想从配方创建以下别名 这是如何实现的 我创建了此类来为 Orchard 添加命令 以便从命令行或配方创建新别名 using Orchard using Orchard Alias using Orchard Commands using