Comment accéder à Control.ViewState avec une sous-classe de contrôle ajoutée dynamiquement?

StackOverflow https://stackoverflow.com/questions/130705

  •  02-07-2019
  •  | 
  •  

Question

Nous avons créé un contrôle qui doit conserver des données via la propriété ViewState de la classe Control. Nos sous-classes de classes contrôlent strictement l'accès à la propriété ViewState (elle est protégée sur l'objet Page). Nous ajoutons le contrôle à Page.Controls dans OnInit, puis nous essayons de définir la propriété ViewState dans OnPreLoad.

Lorsque nous décodons et examinons l'état ViewState de la page, nos valeurs n'ont pas été écrites et ne sont donc pas disponibles pour une extraction ultérieure.

Quelqu'un sait-il comment nous pouvons obtenir le contrôle pour participer au processus ViewState?

Était-ce utile?

La solution

Le problème consiste à ajouter directement le contrôle à la page. Malheureusement, il est trop haut dans la hiérarchie des contrôles pour participer à la gestion des formulaires ViewState. Si vous ajoutez le contrôle à la collection de contrôles d’ASPNet Form, il participera avec succès à LoadViewStateRecursive et SaveViewStateRecursive.

Autres conseils

Essayez de créer votre contrôle dans OnInit, puis ajoutez-le à la page.Controls pendant OnLoad.

ViewState n'est chargé qu'après OnInit, mais avant OnLoad.

Voici un aperçu du cycle de vie d'une page ( GregMac ) publié dans une réponse à une question précédente de le mien.

  • Initialiser
  • LoadViewState
  • Charger les données de post-publication
  • Contrôle d'appel Charger événements
  • Evénement de chargement d'appel
  • Evénements de contrôle d'appel
  • Contrôle PreRender
  • PreRender
  • SaveViewState
  • Décharger

        
  • Licencié sous: CC-BY-SA avec attribution
    Non affilié à StackOverflow
    scroll top