2017-10-13 3 views
0

私は部分クラスOnPreRenderイベントをオーバーライド

最初のクラスを使用してOnPreRenderイベントを上書きしようとしているがKentico CMSからであり、それはCMSのデフォルトのクラスですので、私はクラスのことを変更することはできません。今、私は手動で作成したカスタムクラスである2番目のクラスの最初のクラスのOnPreRenderイベントのデフォルトの動作をオーバーライドしたいと考えています。

クラス1

using System; 
using System.Collections.Generic; 
using CMS.UIControls; 
using CMS.ExtendedControls; 
using CMS.PortalEngine; 
using CMS.Helpers; 

public partial class CMSPages_PortalTemplate : PortalPage 
{ 

    protected override void OnPreRender(EventArgs e) 
    { 
     base.OnPreRender(e); 

     // Init the header tags 
     //tags is a label 
     tags.Text = HeaderTags; 


     if (PortalContext.ViewMode.IsWireframe()) 
     { 
      CSSHelper.RegisterWireframesMode(this); 
     } 
    } 
} 

クラス2

using CMS.UIControls; 
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 


public partial class CMSPages_PortalTemplate : PortalPage 
{ 
    public CMSPages_PortalTemplate() 
    { 

    } 

    protected override void OnPreRender(EventArgs e) 
    { 
     //Override behavior 
     tags.Text = tags.Text + HeaderTags + "MyTest"; 
    } 

} 

これは可能ですか?私はデバッグを試みましたが、2番目のクラスのOnPreRenderイベントにヒットしません。

答えて

0

ASPXモードで開発しているようですが、最初にマスターページテンプレートを作成してから、そのマスターページから継承する必要があります。そこからあなたのページがそのイベントに当たるでしょう。

第2に、クラス名はデフォルトポータルページテンプレートと同じ正確なクラス名です。だから、これはおそらく現在ヒットしていない別の理由です。それを肯定することは、それをその場所で実行することさえある。

は、あなたが部分クラスで同じメソッドをオーバーライドしようとしているdocumentation

0

と一緒に従ってください。

部分クラスを作成する代わりに、CMSPages_PortalTemplateからcumtomクラスを継承します。

関連する問題