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).