How to Execute Page_Load() in Page's Base Class? How to Execute Page_Load() in Page's Base Class? asp.net asp.net

How to Execute Page_Load() in Page's Base Class?


We faced the similar problem, All you need to do is just register the handler in the constructor. :)

public class FactsheetBase : System.Web.UI.Page {     public FactsheetBase()    {        this.Load += new EventHandler(this.Page_Load);    }    public MyPageData Data { get; set; }      protected void Page_Load(object sender, EventArgs e)     {         // get data that's common to all implementors of FactsheetBase         // and store the values in FactsheetBase's properties         this.Data = ExtractPageData(Request.QueryString["data"]);                 } }

Another approach would be to override OnLoad() which is less preferred.

public class FactsheetBase : System.Web.UI.Page {     public FactsheetBase()    {    }    public MyPageData Data { get; set; }      protected override void OnLoad(EventArgs e)    {        //your code        // get data that's common to all implementors of FactsheetBase         // and store the values in FactsheetBase's properties         this.Data = ExtractPageData(Request.QueryString["data"]);                     base.OnLoad(e);    }}


Instead of a Page_Load() method, override OnLoad() and call base.OnLoad() in PerformanceFactsheet


Uhm, I maybe wrong, but I believe this is due to inheritance: you are overwriting the FactsheetBase Page_Load method in the derived class.

In order to have it executed you should do something like

public partial class PerformanceFactsheet : FactsheetBase{    protected void Page_Load(object sender, EventArgs e)    {        base.Page_Load( sender, e );        // do stuff with the data extracted in FactsheetBase        divPerformance.Controls.Add(this.Data);    }}

EDIT: n8wrl definitely gave you a cleaner solution (I am not a ASPX programmer).