Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

I have the following PerformanceFactsheet.aspx.cs page class

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

where FactsheetBase is defined as

public class FactsheetBase : System.Web.UI.Page {     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"]);                 } } 

The problem is that FactsheetBase's Page_Load is not executing.

Can anyone tell me what I'm doing wrong? Is there a better way to get the result I'm after?

Thanks

like image 925
DaveDev Avatar asked Apr 29 '10 12:04

DaveDev


2 Answers

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);     } } 
like image 162
this. __curious_geek Avatar answered Oct 10 '22 13:10

this. __curious_geek


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

like image 38
n8wrl Avatar answered Oct 10 '22 13:10

n8wrl