我正在开发一个需要能够使用一些自定义表单来创建新内容项的 Orchard 站点。
为了处理这个问题,我使用一个控制器来显示一个表单,然后尝试通过填充动态项目然后通过 ContentManagerService 的 Create() 函数发送它们来在回发时创建新的内容项目。
这一切正常,直到我到达作为内容项一部分的内容选择器字段。
在我的项目中,我有一个问题记录的内容类型,它有一个 SubmittedBy 字段,它是一个内容选择器字段。
这是我在处理回帖时在即时窗口中可以看到的内容:
> dynamic q = _questionService.NewQuestion("为什么这不起作用?"); {Custom.Website.Models.Question} 基础 {Orchard.ContentManagement.ContentPart}:{Custom.Website.Models.Question} 是新的:真 原始问题:“为什么这不起作用?” 摘要:空 > q.问题记录 {果园.内容管理.内容部分} 基础 {System.Dynamic.DynamicObject}:{Orchard.ContentManagement.ContentPart} 内容项:{Orchard.ContentManagement.ContentItem} 字段:计数 = 5 编号:0 PartDefinition:{Orchard.ContentManagement.MetaData.Models.ContentPartDefinition} 设置:计数 = 0 类型定义:{Orchard.ContentManagement.MetaData.Models.ContentTypeDefinition} TypePartDefinition:{Orchard.ContentManagement.MetaData.Models.ContentTypePartDefinition} 区域:{Orchard.UI.ZoneCollection} > q.QuestionRecord.SubmittedBy {Orchard.ContentPicker.Fields.ContentPickerField} 基础 {Orchard.ContentManagement.ContentField}:{Orchard.ContentPicker.Fields.ContentPickerField} 内容项:空 标识:{int[0]}
ContentItems 属性是只读的,在将新的 int[] 分配给 Ids 数组时的 Ids 我收到 System.ObjectDisposedException 消息:无法解析实例,并且无法从此 LifetimeScope 创建嵌套生命周期,因为它已经被释放.
是否有任何解决方法可以在代码中设置此值,或者我是否需要创建自己的属性来存储相关的内容项 ID?让 ContentPickerField 的管理界面也可用会非常有帮助。
谢谢。