2017-04-24 6 views
1

EPiServer 8.0のEPiServerオブジェクトのコンテンツタイプを検出する必要があります。これは、コードが遭遇する以下の例外を防ぐためです。EPiServer 8では、コンテンツアイテムからContentTypeを取得するにはどうすればよいですか?

EPiServer.Core.TypeMismatchException:IDを持つコンテンツ '202' タイプ である必要 タイプを継承しません 'Castle.Proxies.PDFMediaFileProxy' ここにEPiServer.Core.PageData "

例外が発生した場所を示すためのコードの略語です。

// This property in our class gets populated elswhere. 
public List<IndexResponseItem> SearchResult { get; set; } 

// Code in method that fails. 
var repository = ServiceLocator.Current.GetInstance<IContentRepository>(); 
foreach (var item in SearchResult) 
{ 
    var foo = new UrlBuilder(item.GetExternalUrl()); 
    IContent contentReference = UrlResolver.Current.Route(foo); 
    if (contentReference != null) 
    { 
     // This line of code breaks. 
     var currPage = repository.Get<PageData>(contentReference.ContentGuid); 
    } 
} 

上記のコードは、Googleの検索でPageDataのコンテンツタイプが返された場合に機能します。しかし、PDFのコンテンツタイプに当たった場合、これは壊れます。

ContentTypeIDの取得は簡単です(contentReference.ContentTypeID経由)。しかし、私は実際に各オブジェクトの実際のコンテンツタイプを調べたいと思います。 ContentTypeを取得するにはどうすればよいですか?ありがとう。

答えて

2

MediaFileオブジェクトあなたがEpiserver検索からのカスタム実装を構築しているかのようにそれはしかし思えるんcontentReference is PageData同様

if (contentReference != null && contentReference is PageData) 
{ 
    var currPage = repository.Get<PageData>(contentReference.ContentGuid); 
} 

、私は例をチェックお勧めしたいことを確認する必要がありますので、PageDataのインスタンスではありませんドキュメント内http://world.episerver.com/documentation/Items/Developers-Guide/Episerver-CMS/8/Search/Search-integration/

関連する問題