如何在AdminUI外部的内容选择器中设置项目?

时间:2015-03-25 19:22:18

标签: orchardcms orchardcms-1.8

我的ContentTypeA字段为ContentPickerA。我还有ContentTypeB和其他字段等。这些是在Migrations.cs文件中创建的,该文件当前是我模块中唯一的代码(下面的工作流程活动除外)。所以,没有零件,司机等。

我正在创建一个Worfklow,在用户注册后,将从ContentItem1创建ContentTypeA,从ContentItem2创建ContentTypeB

我想自动关联内容项,以便ContentPickerA填充ContentItem2。重点是避免必须进入AdminUI来手动链接这些项目。

我已经搜索了很多,并且找不到任何具体的例子,更不用说让我走上正轨的任何事情了。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

在一个Activities类的Execute中,我能够使用以下代码:

public override IEnumerable<LocalizedString> Execute(WorkflowContext workflowContext, ActivityContext activityContext)
    {
        LocalizedString outcome = null;

        try
        {
            //VARIABLES: DATA
            var mainTitle = "Test Content Title From Workflow Activity";
            var matterTitle = "Matter Type Title From Workflow Activity";

            //VARIABLES: NEW CONTENT ITEMS 
            var spacesMain = _contentManager.New("TestContentType");
            var spacesMatter = _contentManager.New("MatterType");

            //BIND DATA
            spacesMain.As<TitlePart>().Title = mainTitle;
            spacesMatter.As<TitlePart>().Title = matterTitle;

            //CREATE DRAFT CONTENT ITEMS
            _contentManager.Create(spacesMain, VersionOptions.Published);
            _contentManager.Create(spacesMatter, VersionOptions.Published);

            //SET CONTENT PICKER
            var contentPickerTest1 = ((dynamic)spacesMain).TestContentType.ContentPickerTest1;
            contentPickerTest1.Ids = new[] { spacesMatter.Id };

            outcome = T("Done");
        }
        catch (Exception exc)
        {
            workflowContext.SetState("Exception", exc);

            outcome = T("Error");
        }

        yield return outcome;

    }

希望这有助于某人,因为作为一名非程序员,我很高兴最终看到AdminUI中的内容项将ContentPickerField设置为我创建的其他内容项。