Tengo una página .aspx de C#/ASP.NET que declara dos controles que representan el contenido de una pestaña. Quiero un argumento de cadena de consulta (por ejemplo,? Tab = 1) para determinar cuál de los dos controles está activado. Mi problema es que ambos pasan por los eventos de inicialización y completan sus controles secundarios, desperdiciando recursos de la CPU y ralentizando el tiempo de respuesta. ¿Es posible desactivarlos de alguna manera para que no sufran ninguna inicialización?¿Cómo declaro un control de usuario web C# pero no de inicializo?
Mi página .aspx se ve así:
<% if (TabId == 0)
{ %>
<my:usercontroltabone id="ctrl1" runat="server" />
<% }
else if (TabId == 1)
{ %>
<my:usercontroltabtwo id="ctrl2" runat="server" />
<% } %>
Y esa parte funciona bien. Supuse que <% significaría que el control no se declararía y no se inicializaría, pero eso no es así ...
Acepto que el código de spaghetti debe ir. La lógica debe permanecer en el código subyacente para mantener las cosas orientadas a objetos. – Daniel
De esta manera funciona bien, la advertencia es si usted está dependiendo de viewstate. Viewstate no se carga automágicamente en controles agregados dinámicamente. –
@Chuck: si mi memoria me sirve correctamente (ha pasado algún tiempo desde que trabajé mucho con formularios web) eso realmente depende de * cuándo * se cargan los controles. Creo que cargar en 'Page_Init' en lugar de' Page_Load' resuelve (la mayoría de) los problemas de viewstate. –