c# une Comment déterminer quel contrôle provoque l'échec du chargement de ViewState?



site web asp.net exemple (1)

Si vous regardez le cycle de la page dans cet article, vous pouvez voir que viewstate est chargé avant le chargement de la page et enregistré avant le rendu. Vous supprimez les contrôles dans le chargement de la page qui est après le chargement de viewstate, ce qui signifie que sur la publication il y a moins de données dans viewstate que la page attend. Essayez de supprimer les contrôles dans prerender qui devrait se produire après l'enregistrement de viewstate et cela devrait résoudre votre problème.

James :-)

Je suis confronté à un problème de chargement Viewstate avec ma page.

Page dispose d'une fonction de connexion pour se connecter aux utilisateurs admin et non-admin. Un comportement étrange se produit lorsqu'un utilisateur non administrateur se connecte à la page et clique sur une case à cocher dans laquelle l'autoropostback est activé. (les détails de l'erreur sont donnés ci-dessous)

Plus tard, j'ai trouvé cela, dans le panneau de navigation sur le côté gauche (qui héberge des liens)

La barre latérale est quelque chose comme représenté ci-dessous

Security
---------
Link1
Link2
Link3

Configuration
---------
Link1
Link2

Si quelque chose de plus que apparaît dans la section "Configuration", cette exception est levée. Les liens sont supprimés dynamiquement (à partir d'une liste complète) en fonction du privilège de l'utilisateur sur Page_Load.

Comment puis-je retracer ce genre de problèmes? J'ai activé toutes les exceptions dans Visual Studio mais ce n'est pas cassant de voir quel contrôle provoque ce problème?

Impossible de charger viewstate. L'arborescence de contrôle dans laquelle viewstate est en cours de chargement doit correspondre à l'arborescence de contrôle utilisée pour enregistrer viewstate lors de la requête précédente. Par exemple, lors de l'ajout dynamique de contrôles, les contrôles ajoutés lors d'un post-retour doivent correspondre au type et à la position des contrôles ajoutés lors de la demande initiale.

[HttpException (0x80004005): Failed to load viewstate.  The control tree into which viewstate is being loaded must match the control tree that was used to save viewstate during the previous request.  For example, when adding controls dynamically, the controls added during a post-back must match the type and position of the controls added during the initial request.]
   System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +380
   System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) +144
   System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +214
   System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) +144
   System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +214
   System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) +144
   System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +214
   System.Web.UI.Page.LoadAllState() +464
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1729




web