title: base.OnLoad(e) in a ASP.NET page
body: <p>I might have misunderstood the meaning of <code>base.OnLoad(e);</code> My understanding was that this statement will call the OnLoad method of the base class of the class where it's called from. However, when I use the debugger to step through the code, I see different results. </p>
  
  <pre><code>public abstract class BaseUC : System.Web.UI.UserControl
  {
     protected override void OnLoad(EventArgs e)
     {
      base.OnLoad(e);
  
      SomeAbstractMethod();
     }
  }
  </code></pre>
  
  <p>In the ascx.cs concrete class</p>
  
  <pre><code>public partial class MyUserControl : BaseUC
  {
      protected void Page_Load(object sender, EventArgs e)
      {
          //On Load logic
      }
  }
  </code></pre>
  
  <p>I have a breakpoint on <code>base.OnLoad(e)</code>. When I press F11 (step into), the debugger takes me to <code>Page_Load</code> of MyUserControl, so the flow of control is:</p>
  
  <pre><code>BaseUC.OnLoad()
  MyUserControl.Page_Load()
  BaseUC.SomeAbstractMethod()
  </code></pre>
  
  <p>Can someone explain what's going on here?</p>