J'ai un contrôle d'utilisateur qui utilise la fonction standard if(!IsPostBack){//initialize myself}
afin d'éviter de refaire l'initialisation pendant les retours en arrière (ce qui revient à échanger moins de consultations de la base de données contre une utilisation accrue du ViewState). Cette approche me convient la plupart du temps, mais il y a un endroit où je veux ajouter ce contrôle à la hiérarchie des contrôles "tardivement", pendant un postback.
Bien entendu, cela fait échouer la logique d'initialisation et le contrôle est rendu dans un état non initialisé.
Quelle garde dois-je utiliser pour déterminer si je dois initialiser, puisque !IsPostBack
n'est pas suffisant ? Je pourrais mettre un drapeau pendant LoadViewState
mais cela semble un peu bricolé. Ce que j'aimerais trouver, c'est une condition qui ne se produit que lorsqu'un contrôle est ajouté pour la première fois à la hiérarchie des contrôles, et une clé pour cela. Une telle condition existe-t-elle ?
[Un exemple de pseudocode est présenté ci-dessous pour la page d'accueil :
protected void Page_Prerender(object sender, EventArgs e)
{
Controls.Add(LoadControl("some_control.ascx"));
}
Existe-t-il un moyen pour some_control
pour savoir qu'il a été ajouté tardivement ?