2009-07-31 9 views
8

Je construis une application dans ASP.NET 2.0 et la valeur de l'état d'affichage est énorme:Grande valeur ViewState dans ASP.NET

<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTExNz... 

La valeur contient 535.000 caractères. Est-ce normal? Comment puis-je le rendre plus petit?

Répondre

11

Regardez dans enabling ASP.NET tracing pour vos pages Web - qui vous dira quelles commandes stockent combien dans l'état d'affichage. Vous pouvez ensuite désactiver l'état d'affichage pour les contrôles dont vous savez qu'ils ne l'utilisent pas.

+0

Merci pour le conseil. Le problème était une liste déroulante qui a été remplie à partir d'une base de données. Je ne sais pas pourquoi il y avait un énorme viewstate. – Jaelebi

+0

Je recommande l'approche de la programmation sans viewstate; activer et utiliser uniquement si requis par le formulaire et/ou les contrôles. Dans ce cas, vous pourriez vouloir évaluer si viewstate est nécessaire pour ce contrôle particulier. Si vous n'êtes pas sûr, désactivez-le au niveau du contrôle, voyez ce qui casse, puis réactivez-le. La taille de Viewstate peut être un multiple de la taille réelle des données du contrôle, vous devez donc remplir les données avec parcimonie - n'incluez que ce qui est nécessaire. – Matt

6

ViewState peut devenir moche sur vous. Fondamentalement, je dirais que le problème est que ViewState est activé par défaut sur tout, et un lot des choses n'ont pas besoin d'être. L'exemple le plus basique serait les objets Label. Essayez de désactiver ViewState lorsque cela vous semble inutile (EnableViewState est la propriété que vous recherchez).

+0

Cela dépendrait-il des objets par page ou de l'ensemble de l'application? – Jaelebi

+0

Cela dépend des objets de cette page. –

+1

Peut être utile d'ajouter un exemple: '' – Blixt

2

Si vous écrivez un peu de code, vous pouvez stocker l'état d'affichage sur votre serveur au lieu de l'envoyer via le réseau pour un aller-retour. Vous pouvez également le compresser pour économiser de l'espace/de la bande passante et du temps de chargement.

Here est quelque chose que j'ai écrit à ce sujet il y a quelque temps.

+0

Down vote dû au lien mortel –

+0

Ajout du lien correct. – Rakhitha

Questions connexes