2009-12-03 5 views
1

Dans un article que je lisais sur ViewState, j'ai vu une phrase disant que je ne devrais pas tomber dans une erreur pour croire que la valeur d'un TextBox est stockée dans ViewState; il est stocké dans les données PostBack. De là, ce que je comprends est quand je publie un formulaire Web, les valeurs des contrôles d'entrée sont stockées dans le corps de la demande HTTP. Pas dans le Viewstate. Mais dans la mesure où je sais que les valeurs ViewState sont stockées dans un champ caché appelé __VIEWSTATE de toute façon. Ensuite, cela signifie-t-il que la valeur __VIEVSTATE n'est pas publiée dans le corps de la requête HTTP POST en tant que données de publication? Cela ne me semble pas sensé.A l'intérieur de ce que la valeur TexBox est postée? ViewState ou afficher des données?

En d'autres mots, en gros si je dis que le mécanisme de ViewState pour un tel scenerio fonctionne comme ça, que je voyais quelque chose de bien ou de sauter:

  1. Vous entrez une valeur sur une zone de texte vide et soumettre la page

  2. La valeur de la zone de texte est postée dans le corps de requête POST HTTP. Rien à l'intérieur __VIEWSTATE à ce point de la zone de texte

  3. Du côté du serveur, la zone de texte est créé avec la valeur par défaut sur la méthode OnInit de la page

  4. La propriété TrackChange de ViewState est définie sur true.

  5. Les données de retour affichées de TextBox sont chargées. Étant donné qu'il est différent de la valeur de la zone de texte TextBox (parce que l'utilisateur a entré quelque chose), ViewState de cette zone de texte est marqué comme DIRTY.

  6. La nouvelle valeur de la zone de texte est écrit dans __VIEWSTATE champ caché

  7. A partir de maintenant hiddenfeild __VIEWSTATE contient la dernière valeur donnée de la zone de texte

  8. La page est envoyée au navigateur de l'utilisateur ayant la __VIEWSTATE champ masqué. Mais cette fois-ci contenant la dernière valeur entrée par l'utilisateur qui sera prêt à être rendu

Merci les gars!

Burak Ozdogan

+0

Vous avez vraiment besoin de vérifier vos étiquettes avant de poster .. maintenant il ya des balises inutiles telles que comment et fonctionne dans le système. J'ai édité votre réponse. –

+0

Merci surfbum. – pencilCake

Répondre

0

ViewState est une entrée cachée sur la page qui permet au serveur de maintenir l'état dans plusieurs demandes de la même page. ViewState est maintenu par le serveur, donc il reste le même à moins que le serveur ne le change. ViewState est juste un moyen pour le serveur de parler à lui-même.

Dans votre exemple, vous vous demandez pourquoi la première fois que vous placez une valeur dans un TextBox, il ne semble rien y avoir dans ViewState. La raison en est que le serveur n'a encore rien mis là. Lorsque la valeur de votre TextBox atteint le serveur la première fois, le serveur place la valeur dans ViewState afin qu'il puisse en garder le suivi pour toutes les demandes suivantes.

Lors des demandes suivantes, la valeur TextBox sera codée dans ViewState et renvoyée au serveur en tant que données POST.