2017-07-26 6 views
0

すべてのテンプレートに対してDisplayOptionsを実装するには、ContentAreaRendererをオーバーライドする必要があります。AreaContentRenderer CtontはIContentAreaItemAttributeAssemblerを受け取りません

すべてのテンプレートに影響するように、ContentAreaで表示するにはdisplayオプションが必要です。

アイブ氏は、私は私があるため、ベースコンストラクタの問題を取得するタイプにはない変更するとエラー が 「ContentFragmentAttributeAssemblerではなく、時代遅れの使用IContentAreaItemAttributeAssemblerである」取得 うまくいかない何 https://world.episerver.com/blogs/Anders-Hattestad/Dates/2014/8/Extending-ContentArea-to-use-custom-CSS-class-on-child-elements/

このソリューションを実装しようとしましたIContentAreaItemAttributeAssemblerエン取るのではなく時代遅れContentFragmentAttributeAssembler

あなたの属性を再配置する必要があるかもしれ
public class ContentAreaRendererWithDisplayOptionWithCss : ContentAreaRenderer 
    { 
     private readonly DisplayOptions _displayOptionsOwn; 
     private readonly IContentRepository _contentRepositoryOwn; 
     public ContentAreaRendererWithDisplayOptionWithCss() 
      : this(
        ServiceLocator.Current.GetInstance<IContentRenderer>(), 
        ServiceLocator.Current.GetInstance<TemplateResolver>(), 
        ServiceLocator.Current.GetInstance<IContentAreaItemAttributeAssembler>(), 
        ServiceLocator.Current.GetInstance<IContentRepository>(), 
        ServiceLocator.Current.GetInstance<DisplayOptions>()) 
     { 

     } 
     public ContentAreaRendererWithDisplayOptionWithCss(
      IContentRenderer contentRenderer, 
      TemplateResolver templateResolver, 
      IContentAreaItemAttributeAssembler attributeAssembler, 
      IContentRepository contentRepository, 
      DisplayOptions displayOptions) 
      : base(contentRenderer, 
        templateResolver, 
        attributeAssembler, 
        contentRepository, 
        displayOptions) 
     { 
      _displayOptionsOwn = displayOptions; 
      _contentRepositoryOwn = contentRepository; 
     } 

    } 

答えて

0

。代わりに表示displayOptionsはの、

あなたの例ではenter image description here

は、あなたがIContentAreaLoaderを渡していない、基本コンストラクタの最後の引数でなければなりません:それはIContentAreaItemAttributeAssemblerを取るん新しいコンストラクタのように私には見えます。

public ContentAreaRendererWithDisplayOptionWithCss(
     IContentRenderer contentRenderer, 
     TemplateResolver templateResolver, 
     IContentAreaItemAttributeAssembler attributeAssembler, 
     IContentRepository contentRepository, 
     IContentAreaLoader contentAreaLoader, 
     DisplayOptions displayOptions) 
     : base(contentRenderer, 
       templateResolver, 
       attributeAssembler, 
       contentRepository, 
       contentAreaLoader) 
    { 
     _displayOptionsOwn = displayOptions; 
     _contentRepositoryOwn = contentRepository; 
    } 
関連する問題