いくつかのカスタマイズされたフォームを使用して新しいコンテンツ アイテムを作成できるようにする必要があるオーチャード サイトで作業しています。
これを処理するために、コントローラーを使用してフォームを表示し、動的アイテムを入力して 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 の管理インターフェイスも利用できると非常に便利です。
ありがとう。