Ho una pagina C#/ASP.NET .aspx che dichiara due controlli che rappresentano ciascuno il contenuto di una scheda. Voglio un argomento stringa di query (ad esempio,? Tab = 1) per determinare quale dei due controlli è attivato. Il mio problema è che entrambi passano attraverso gli eventi di inizializzazione e popolano i controlli figlio, sprecando risorse della CPU e rallentando i tempi di risposta. È possibile disattivarli in qualche modo in modo da non passare attraverso l'inizializzazione?Come si dichiara un controllo utente Web C# ma si impedisce l'inizializzazione?
mia pagina aspx si presenta così:
<% if (TabId == 0)
{ %>
<my:usercontroltabone id="ctrl1" runat="server" />
<% }
else if (TabId == 1)
{ %>
<my:usercontroltabtwo id="ctrl2" runat="server" />
<% } %>
E quella parte funziona bene. Ho assunto che il <% avrebbe significato che il controllo non sarebbe stato effettivamente dichiarato e quindi non inizializzerebbe, ma non è così ...
Sono d'accordo sul fatto che il codice degli spaghetti deve andare. La logica dovrebbe rimanere nel codebehind per mantenere le cose orientate agli oggetti. – Daniel
In questo modo funziona bene, l'avvertenza è se si dipende da viewstate. Viewstate non è caricato automaticamente con controlli aggiunti dinamicamente. –
@Chuck: Se la memoria mi serve correttamente (è passato un po 'di tempo dal momento in cui ho lavorato molto con i moduli Web) dipende molto da * quando * i controlli sono caricati. Credo che il caricamento in 'Page_Init' piuttosto che' Page_Load' risolva (la maggior parte) i problemi relativi allo stato di visualizzazione. –