いくつかのカスタマイズされたフォームを使用して新しいコンテンツ アイテムを作成できるようにする必要があるオーチャード サイトで作業しています。
これを処理するために、コントローラーを使用してフォームを表示し、動的アイテムを入力して ContentManagerService の Create() 関数を介して送信することにより、ポストバック時に新しいコンテンツ アイテムを作成しようとしています。
コンテンツ アイテムの一部として持っているコンテンツ ピッカー フィールドに到達するまで、これは正常に機能しています。
私のプロジェクトには、コンテンツ ピッカー フィールドである SubmittedBy フィールドを持つ質問レコードのコンテンツ タイプがあります。
ポストバックを処理しているときに、イミディエイト ウィンドウに表示される内容は次のとおりです。
> dynamic q = _questionService.NewQuestion("なぜうまくいかないのですか?"); {Custom.Website.Models.Question} ベース {Orchard.ContentManagement.ContentPart}: {Custom.Website.Models.Question} IsNew: 真 元の質問: 「なぜこれが機能しないのですか?」 要約: null > q.質問記録 {Orchard.ContentManagement.ContentPart} ベース {System.Dynamic.DynamicObject}: {Orchard.ContentManagement.ContentPart} ContentItem: {Orchard.ContentManagement.ContentItem} フィールド: カウント = 5 ID: 0 PartDefinition: {Orchard.ContentManagement.MetaData.Models.ContentPartDefinition} 設定: カウント = 0 TypeDefinition: {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} ContentItems: null ID: {int[0]}
ContentItems プロパティは読み取り専用であり、新しい int[] を Ids 配列に割り当てると Ids System.ObjectDisposedException というメッセージが表示されます: インスタンスは解決できず、この LifetimeScope は既に破棄されているため、ネストされたライフタイムを作成できません。 .
この値をコードで設定するための回避策はありますか? または、関連するコンテンツ アイテム ID を格納するために独自のプロパティを作成する必要がありますか? ContentPickerField の管理インターフェイスも利用できると非常に便利です。
ありがとう。