部分类中的OnPreRender事件覆盖

时间:2017-10-13 03:09:42

标签: c# asp.net c#-4.0 kentico asp.net-4.5

我正在尝试使用部分类重写OnPreRender事件

第一个类来自Kentico CMS,我无法更改这些类,因为它是CMS中的默认类。现在我想覆盖第二个类的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";
    }

}

这可能吗?我尝试过调试,但它从未遇到过第二类的OnPreRender事件

2 个答案:

答案 0 :(得分:0)

看起来您正在开发ASPX模式,然后您需要先创建一个母版页模板,然后让您的后续页面继承该母版页。从那里你的页面将会击中该事件。

其次,类名与默认门户页面模板具有完全相同的类名。所以这可能是它目前没有被击中的另一个原因。它甚至可以在适当的时候运行。

跟随documentation

答案 1 :(得分:0)

您正尝试在部分类中覆盖相同的方法。

而不是创建部分类从CMSPages_PortalTemplate继承你的cumtom类