【问题标题】:OnPreRender Event Override in partial class部分类中的 OnPreRender 事件覆盖
【发布时间】:2017-10-13 03:09:42
【问题描述】:

我正在尝试使用部分类覆盖 OnPreRender 事件

第一类来自 Kentico CMS,我无法更改这些类,因为它是 CMS 中的默认类。现在我想在第二个类中覆盖第一个类中 OnPreRender 事件的默认行为,第二个类是我手动创建的自定义类。

第一类

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 事件

【问题讨论】:

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


    【解决方案1】:

    看起来您是在 ASPX 模式下进行开发,那么您需要先创建一个母版页模板,然后让您的后续页面从该母版页继承。从那里您的页面将触发该事件。

    其次,类名与默认门户页面模板完全相同。所以这可能是它目前没有受到打击的另一个原因。令人惊讶的是,它甚至可以在适当的位置运行。

    关注documentation

    【讨论】:

      【解决方案2】:

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

      不是创建部分类,而是从 CMSPages_PortalTemplate 继承您的自定义类

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-24
        • 2012-04-12
        • 2013-06-18
        • 2012-08-02
        • 1970-01-01
        • 2016-02-23
        相关资源
        最近更新 更多