2010-01-25 12 views
0

J'ai une page ASPX qui charge dynamiquement les contrôles utilisateur: il y a un UpdatePanel qui contient ces contrôles (un à chaque fois). Lorsque je modifie un contrôle avec un autre, il échoue avec le message:Impossible de charger viewstate

Échec du chargement de viewstate. L'arborescence de contrôle dans laquelle viewstate est chargé doit correspondre à l'arborescence de contrôle qui a été utilisée pour enregistrer viewstate pendant l'application précédente. Par exemple, lors de l'ajout dynamique de contrôles, les contrôles ajoutés au cours d'un retour doivent correspondre au type et à la position des contrôles ajoutés au cours de l'application initiale .

Tous les trois contrôles héritent de System.Web.UI.UserControl. Peut-être que je peux résoudre le problème en faisant:

  1. Chargez trois contrôles au moment du démarrage, puis masquer deux d'entre eux comme nous en avons besoin.
  2. Utilisez trois UpdatePanels, un pour chaque contrôle utilisateur.
  3. Un conseil?

Répondre

0

Assurez-vous que les publications ne mettent pas à jour les groupes non souhaités en définissant le mode de publication conditionnelle et en les mettant à jour manuellement.

+0

Non, je l'ai fait et il lance la même exception. – VansFannel

+0

Essayez d'insérer un point d'arrêt dans votre fonction que vous allez toucher lorsque vous publiez. Ensuite, utilisez la fenêtre de surveillance pour démarrer dans la liste .Controls qui contient vos contrôles créés dynamiquement. Voyez si vos contrôles existent dans cette liste. Sinon, vous devrez ajouter chaque contrôle à son propre panneau de mise à jour. – Daniel

+0

Maintenant j'utilise un UpdatePanel pour chaque contrôle. Le problème a été résolu, mais maintenant j'en ai un autre: Erreur d'exécution dans Microsoft JScript: Sys.InvalidOperationException: Impossible de trouver UpdatePanel avec ID. 'CreateDestination1_DestinationMainUpdatePanel'. Si vous effectuez une mise à niveau dynamique, il doit s'agir d'un autre UpdatePanel. – VansFannel

0

Lorsque vous ajoutez dynamiquement les contrôles utilisateur, attribuez-vous la propriété id? Et ajoutez-vous à nouveau le contrôle, sur la publication, définissant la propriété id à la même valeur?