Orchardcms 如何在AdminUI之外的内容选择器中设置项目?
我有Orchardcms 如何在AdminUI之外的内容选择器中设置项目?,orchardcms,orchardcms-1.8,Orchardcms,Orchardcms 1.8,我有ContentTypeA和ContentPickerA字段。我还有ContentTypeB和其他字段等。这些字段是在Migrations.cs文件中创建的,该文件是我模块中当前唯一的代码(以下工作流活动除外)。所以,没有零件、驱动器等 我正在创建一个Worfklow,在用户注册后,该Worfklow将创建ContentItem1关闭ContentTypeA,以及ContentItem2关闭ContentTypeB 我想自动链接内容项,这样我就可以用ContentItem2填写ContentP
ContentTypeA
和ContentPickerA
字段。我还有ContentTypeB
和其他字段等。这些字段是在Migrations.cs
文件中创建的,该文件是我模块中当前唯一的代码(以下工作流活动除外)。所以,没有零件、驱动器等
我正在创建一个Worfklow,在用户注册后,该Worfklow将创建ContentItem1
关闭ContentTypeA
,以及ContentItem2
关闭ContentTypeB
我想自动链接内容项,这样我就可以用ContentItem2
填写ContentPickerA
。要点是避免进入AdminUI手动链接这些项目
我已经搜索了很多,但没有找到任何具体的例子,更不用说让我走上正轨的任何东西了
非常感谢您的帮助。在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;
}
public override IEnumerable Execute(WorkflowContext WorkflowContext,ActivityContext ActivityContext)
{
LocalizedString结果=null;
尝试
{
//变量:数据
var mainttitle=“工作流活动中的测试内容标题”;
var matterTitle=“来自工作流活动的事项类型标题”;
//变量:新内容项
var spacesMain=_contentManager.New(“TestContentType”);
var spacesMatter=_contentManager.New(“MatterType”);
//绑定数据
spacesMain.As().Title=mainttitle;
spacesMatter.As().Title=matterTitle;
//创建草稿内容项
_创建(spacesMain,VersionOptions.Published);
_创建(spacesMatter,VersionOptions.Published);
//设置内容选择器
var contentPickerTest1=((动态)spacesMain).TestContentType.contentPickerTest1;
contentPickerTest1.Ids=new[]{spacesMatter.Id};
结果=T(“完成”);
}
捕获(异常exc)
{
workflowContext.SetState(“异常”,exc);
结果=T(“错误”);
}
收益结果;
}
希望这对其他人有所帮助,因为作为一名非程序员,我很高兴终于看到AdminUI中的内容项将ContentPickerField设置为我创建的其他内容项