0

次のコードを使用して、移行のコンテンツ タイプに MediaLibraryPickerField を追加しました。

ContentDefinitionManager.AlterPartDefinition("MyPart",
    builder => builder.WithField("MyImage", 
        fieldBuilder => fieldBuilder.OfType("MediaLibraryPickerField")
                                    .WithDisplayName("My Image")));

これにより、編集ビューにメディア ライブラリ ピッカー コントロールが表示され、期待どおりに動作します。

SummaryAdmin で MyPart を表示すると、Orchard は Image.SummaryAdmin.cshtml を使用しようとし、.As<MediaPart>null が返されるため、ここでエラーが発生します。

var mediaPart = ((ContentItem)Model.ContentItem).As<MediaPart>();

Model.ContentItem は MediaPart ではなく、MyType です。MyType にアタッチされた ImagePart があります。

質問:

  1. Image シェイプが MediaPart を探しているのはなぜですか
  2. MediaPart をモデルの一部として挿入するにはどうすればよいですか? (するべきか?)
  3. ここで別のビューを作成し、正しい部分にドリルダウンする必要がありますか?
  4. MediaLibraryPickerField の使用方法が完全に欠落していますか?
4

1 に答える 1

1
@{  
     var mediaPart= ((Orchard.MediaLibrary.Fields.MediaLibraryPickerField)Model.Fields.Single(f => f.Name == "MyImage")).MediaParts;
}
于 2013-12-26T14:09:17.460 に答える