J'ai une page C#/ASP.NET .aspx qui déclare deux contrôles représentant chacun le contenu d'un onglet. Je veux un argument de chaîne de requête (par exemple,? Tab = 1) pour déterminer lequel des deux contrôles est activé. Mon problème est, ils vont tous deux à travers les événements d'initialisation et peupler leurs contrôles enfants, gaspillant les ressources du processeur et ralentir le temps de réponse. Est-il possible de les désactiver d'une manière ou d'une autre afin qu'ils ne subissent aucune initialisation?Comment déclarer un contrôle d'utilisateur Web C# mais l'empêcher d'être initialisé?
Ma page .aspx ressemble à ceci:
<% if (TabId == 0)
{ %>
<my:usercontroltabone id="ctrl1" runat="server" />
<% }
else if (TabId == 1)
{ %>
<my:usercontroltabtwo id="ctrl2" runat="server" />
<% } %>
Et cette partie fonctionne très bien. Je supposais que le <% aurait signifié que le contrôle ne serait pas réellement déclaré et ne serait donc pas initialisé, mais ce n'est pas le cas ...
Je suis d'accord que le code spaghetti doit disparaître. La logique doit rester dans le codebehind pour que les objets restent orientés objet. – Daniel
De cette façon fonctionne bien, la mise en garde est si vous dépendez de viewstate. Viewstate n'est pas chargé automatiquement sur les contrôles ajoutés dynamiquement. –
@Chuck: Si ma mémoire me sert bien (cela fait un certain temps que j'ai beaucoup travaillé avec des formulaires web) cela dépend vraiment de * quand * les contrôles sont chargés. Je crois que le chargement dans 'Page_Init' plutôt que' Page_Load' résout (la plupart des) les problèmes viewstate. –