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を取得するにはどうすればよいですか?ありがとう。