I have a C#/ASP.NET .aspx page that declares two controls that each represents the content of one tab. I want a query string argument (e.g., ?tab=1) to determine which of the two controls is activated. My problem is, they both go through the initialization events and populate their child controls, wasting CPU resources and slowing the response time. Is it possible to deactivate them somehow so they don’t go through any initialization?
My .aspx page looks like this:
<% if (TabId == 0)
{ %>
<my:usercontroltabone id="ctrl1" runat="server" />
<% }
else if (TabId == 1)
{ %>
<my:usercontroltabtwo id="ctrl2" runat="server" />
<% } %>
And that part works fine. I assumed the that <%’s would have meant the control wouldn’t actually be declared and so wouldn’t initialize, but that isn’t so…
If inline/spaghetti server side code does not help, I can only think of one alternative solution: avoid declaring the controls in the markup. Instead, load the control you actually want on the page from your
Page_Initevent handler. ThePage.LoadControl()method can be used for this: