2017-01-05 22 views
1

私はEPiServerに関する初心者です。私たちはEPiServer Version 9.12を使用します。 EPiServer.Core.ContentAreaが廃止されました、過去のコンテンツリストを持っていた、以下を参照してください。http://world.episerver.com/documentation/Class-library/?documentId=cms/7.5/284B326AEPiServer 9:EPiServer ContentAreaコンテンツの代替手段はありますか?

image http://jweschenfelder.de/download/Untitled.png

内容リストは、あなたがそれなぜならブロックの名を読み取ることができ、過去の利点がありましたContentAreaの全内容を読んでください。新しいブロックを作成する場合は、CMS内で設定することができるので、名前を取得することは素晴らしいことです。現在提案されているアイテムコレクションを代わりに使用すると、リンクアイテムコレクションを含むブロックの名前を読み取ることができません。ブロック内でリンクアイテムコレクションのみを読み取ることができます。
IContentLoader contentLoader = ServiceLocator.Current.GetInstance< IContentLoader >(); OnSiteLinkBlock itemBlock = contentLoader.Get(item.ContentLink, new LoaderOptions() { LanguageLoaderOption.MasterLanguage() });
私はOnSiteLinkBlockを編集することができていますが、追加のプロパティがnullのままとEPiServerのContentLoader(IContentLoaderがEPiServerのインタフェースである)によって充填されていない:

私は例を見てきました。クラス階層について

さらに詳しい情報:
- [AvailableContentTypes(Availability = Availability.None)]
public class BlockData : ContentData, IReadOnly< BlockData >, IReadOnly
(EPiServer.Core中)
- public abstract class BlockBase : BlockData(BlockBaseが自分のクラスである)
- public class OnSiteLinkBlock : BlockBase(OnSiteLinkBlockが自分のクラスである)

は誰かがいここで解決策を知っていますか? ContentAreaのプロパティをもっと読むには?またはContentAreaの代替手段が存在しますか?どうもありがとう!

+1

新しいLoaderOptions 'なしでみました(){LanguageLoaderOption.MasterLanguage()} '?おそらく、マスター言語にはすべてのプロパティの値がありません。しかし、その名前に価値があるはずです。 OnSiteLinkBlockとしてコンテンツを読み込むのではなく、IContentとして読み込むことができます。そこにはnameプロパティがあります。または、読み込んだ後にOnSiteLinkBlockをIContentにキャストするだけです。 –

答えて

4

通常、ContentAreasからコンテンツを読み取るには、ItemsまたはFilteredItemsプロパティを使用します。彼らはContentAreaItemの列挙を返します。

IContentLoaderを使用してIContentインスタンスを解決し、ContentAreasに代わる方法に関するご質問に対してContentLink

var loader = ServiceLocator.Current.GetInstance<IContentLoader>(); 

// contentarea is called UpperArea in the example 
var icontentItems = currentPage.UpperArea 
         .FilteredItems 
         .Select(x => loader.Get<IContent>(x.ContentLink)); 

// example render in razor 
foreach (var icontentItem in icontentItems) 
{ 
    <h2>@icontentItem.Name</h2> 
} 
+1

ありがとう!それが解決策です!それはうまく動作します。前にEPiServerのドキュメントを検索しましたが、そこに何も見つかりませんでした。ご協力いただき誠にありがとうございます!!! –

0

でそれを養う、答えはイエスです。

- LinkItemCollection 
- IList<ContentReference> 
- ContentArea 

これは彼らの主な違いについての素敵な読み取りです:ブロック/ページタイプのリストを追加する3つの方法、その長所と短所を持つそれぞれが基本的にありますhttps://gregwiechec.com/2015/09/comparing-list-properties/

関連する問題