2017-11-23 9 views
0

コンテンツの編集URLをバックエンドからの文字列として取得しようとしていますが、キャッチはワークフローアクティビティ内にあるため、 Url.Action ...またはUrl.ItemEditLink ...または他のUrlHelpersをコントローラまたはビューであるかのように使用します。また、私はワークフローの中にいますが、必要なコンテンツはworkflowContextまたはactivityContextの一部ではないため、これらのトークンもトークンも使用できません。コンテンツ編集URLをUrlHelpersまたはOrchardトークンなしの文字列として取得

コンテンツメタデータとサイトbaseUrlを取得して手動でビルドしようとする可能性がありますが、この方法ではエラーが発生する可能性があります。

ありがとうございました。

+0

電子メールメッセージの本文にURLが必要ですか? – Lawyerson

+0

はい、ただし、Urlが必要なコンテンツはワークフローまたは現在のコンテキストの一部ではないため、利用できるトークンはありません。私は電子メール活動と基本的に同じ活動をしていますが、私はバックエンドから本文を作成し、URLをそこに含めなければなりません。 – Velair

+0

私はこれを個人的には行っていないので、完全な回答は得られませんが、カスタムトークンを使って必要なコンテンツアイテムを取得し、既存のEditUrlトークンとAbsoluteUrlトークンでチェーンすることができます。 http://arkleseizure.net/custom-tokens-in-orchard-cms – Lawyerson

答えて

1

これは私が活動にウリを構築する方法である:

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"); 
    } 
} 

は、私が実際にウリ半手動で構築しないことが判明したが、私はこの方法で問題がありませんでした。 Orchard内のナビゲーションにはItemDisplayUrlだけを使用できます。文字列が外部のプログラム(Slack)に送られるので、私は完全なURLを取得しなければならなかった。

関連する問題