Orchardcms 以字符串形式获取内容编辑URL,而不使用URL帮助程序或Orchard标记

Orchardcms 以字符串形式获取内容编辑URL,而不使用URL帮助程序或Orchard标记,orchardcms,orchardcms-1.10,Orchardcms,Orchardcms 1.10,我正在尝试从后端获取内容的编辑URL作为字符串,问题是我在工作流活动中,因此无法使用URL。操作。。。或Url.ItemEditLink。。。或其他UrlHelpers,就好像它是控制器或视图一样。此外,尽管我在工作流中,但我需要它的内容不是workflowContext或activityContext的一部分,因此我也不能使用这些内容或令牌 解决方案可以是获取内容元数据和SiteBaseURL并尝试手动构建,但我认为这种方法容易出错 谢谢。这是我在活动中构建Uri的方式: public cla

我正在尝试从后端获取内容的编辑URL作为字符串,问题是我在工作流活动中,因此无法使用URL。操作。。。或Url.ItemEditLink。。。或其他UrlHelpers,就好像它是控制器或视图一样。此外,尽管我在工作流中,但我需要它的内容不是workflowContext或activityContext的一部分,因此我也不能使用这些内容或令牌

解决方案可以是获取内容元数据和SiteBaseURL并尝试手动构建,但我认为这种方法容易出错


谢谢。

这是我在活动中构建Uri的方式:

public class MyClass : Task
{
    private readonly RequestContext _requestContext;
    ...

    public MyActivity(RequestContext requestContext, ...)
    {
        _requestContext = requestContext;
        ...
    }

    ...

    public override IEnumerable<LocalizedString> Execute(WorkflowContext workflowContext, ActivityContext activityContext)
    {
        var content = ... get using ID
        var helper = new UrlHelper(_requestContext);
        var baseurl = new Uri(_orchardServices.WorkContext.CurrentSite.BaseUrl);
        Uri completeurl = new Uri(baseurl, helper.ItemDisplayUrl(content));

        yield return T("Done");
    }
}
公共类MyClass:任务
{
私有只读RequestContext\u RequestContext;
...
公共MyActivity(RequestContext RequestContext,…)
{
_requestContext=requestContext;
...
}
...
公共重写IEnumerable执行(WorkflowContext WorkflowContext,ActivityContext ActivityContext)
{
var content=…使用ID获取
var helper=newurlhelper(_requestContext);
var baseurl=新Uri(_orchardServices.WorkContext.CurrentSite.baseurl);
Uri completeurl=新Uri(baseurl,helper.ItemDisplayUrl(content));
收益率回报T(“完成”);
}
}

事实证明,我确实是半手动构建Uri的,但我对这种方法没有任何问题。您可以仅使用ItemDisplayUrl在Orchard内部进行导航;我必须获得完整的URL,因为字符串被发送到外部程序(Slack)

您是否需要电子邮件正文中的URL?是的,但我需要URL的内容不是工作流或当前上下文的一部分,因此没有可用的标记。我有一个与电子邮件活动基本相同的活动,但我需要从后端创建正文并在其中包含URL。我个人没有这样做,因此我无法提供完整的答案,但也许您可以使用自定义令牌获取所需的内容项,并将其与现有的EditUrl和AbsoluteUrl令牌链接。问题是您无法检索内容项的ID,还是您无法在活动中创建UrlHelper?我能够注入RequestContext依赖项并实例化UrlHelper,但内容ID来自工作流早期的自定义活动标记。谢谢,我已经有了内容ID,但需要生成编辑Url,所以我会像你一样尝试。如果你愿意的话,你可以发布一个答案