ViewState perdu sur l'actualisation dans UpdatePanel?
Plutôt que d'utiliser l'objet de Session ou de stockage de la base de données, je suis le stockage temporaire des variables que j'ai besoin persisté à la coutume de l'état d'affichage des variables. Par exemple, l'état d'affichage("MyField1") = 1
Lorsque l'utilisateur appuie sur le navigateur Rrefresh bouton, la Page.IsPostback est de retour à la Faux et le ViewState est allé.
Ma question est. Si l'utilisateur peut souffler le Viewstate par rafraîchissante, pourquoi serait-on l'utiliser?
Je sais qu'un Rafraîchissement reposte le dernier soumis à la page, par pourquoi est Page.IsPostback reset pour Faux et le ViewState soufflé?
La flamme moi si vous voulez pour la création d'un potentiel de dup question, mais j'ai lu d'autres offres d'ici, et ce n'est pas de sombrer dans...
Mise à jour post original:
Maintenant je pense que cela a à voir avec les publications sont effectuées en tant que résultat d'un clic sur les Boutons qui sont dans un UpdatePanel. Quelqu'un peut-il m'éclairer sur ce point?
OriginalL'auteur ChadD | 2009-12-16
Vous devez vous connecter pour publier un commentaire.
Lorsqu'un client actualise son navigateur, il re-soumet le dernier plein page de requête émise par le client (qui peut être un GET ou un POST). Il n'a jamais soumettre de nouveau les requêtes AJAX, tels que ceux produits par le panneau de mise à jour des événements déclencheurs ("partielle des publications de la page").
Le fait que
Page.IsPostback
estfalse
lorsque vous actualisez la page signifie que votre demande initiale est d'une, voici ce qui est probablement en train de se produire:1) Lors de la demande initiale, le client n'envoie pas de données du formulaire au serveur, donc pas de champ caché contenant de l'état d'affichage de données (La compréhension ASP.NET l'État d'Affichage est assez détaillé, mais une bonne lecture si vous voulez vraiment comprendre ce qu'il se passe). Lors du traitement de cette demande, ASP.NET peut envoyer de l'état d'affichage pour le client, mais la demande d'origine est juste une URL.
2) Lorsque l'utilisateur clique sur un bouton dans un UpdatePanel, ils déclenchent une publication partielle au cours de laquelle
MyField
est fixé à 1. L'UpdatePanel changements de la vue du client etat de tenir compte de la nouvelle valeur.À ce point, si l'utilisateur soumet une requête POST par des moyens normaux, tels que de cliquer sur un bouton, l'état d'affichage contient la mise à jour de l'information.
Si l'utilisateur clique sur "Actualiser" si, ils se sont re-présenter l'original de la demande à partir de l'étape 1, sans aucune forme de données et, par conséquent, aucun état d'affichage.
Mise à jour de ma réponse à la lumière des nouvelles informations.
OriginalL'auteur Jeff Sternal
Où pouvez-vous définir votre état d'affichage? Et où avez-vous relu votre état d'affichage de la valeur? Peut-être la mine d'oyu vérifier son contenu avant de asp.net appelle la LoadViewState() la méthode.
Je l'ai vérifié dans l'événement Page_Load de la Forme de Web
OriginalL'auteur pencilCake
De l'utilisateur de l'actualisant et en utilisant updatepanel ne fonctionnera pas très bien ensemble. Je quess c'est pourquoi les gens disent que les Formulaires web fournit une abstraction qui fuit sur la programmation web et certains sont en mouvement à la mvc.
Si vous n'êtes pas intéressés par la migration, je voudrais vous donner les conseils qui n'utilisent pas updatepanel trop long ou de grosses opérations, où vous pouvez supposer que l'utilisateur peut actualiser la page. L'utiliser pour les petites choses comme dropdown2 éléments de remplacement en cas de sélection sur dropdown1 changements.
Habillage de nombreuses fonctionnalités dans un updatepanel cause des problèmes, si vous avez juste dépendra de l'état d'affichage.
OriginalL'auteur Morri
À votre question, "Pourquoi quelqu'un l'utiliser."
Viewstate est très pratique pour les données que vous savez est généré par un message de retour. Frapper d'actualisation n'est pas un message de retour, mais une nouvelle demande.
Donc permet de dire que vous naviguez sur une grille de données et que vous avez besoin de connaître certains bits de données à propos de ce qu'ils ont cliqué, sur l'événement click vous pouvez stocker des données dans l'état d'affichage et de le traiter à d'autres moments dans la page cycle de vie, ou ultérieure post le dos.
ViewState l'avantage est qu'il est intégré dans le HTML, il est donc d'autant côté client. Où que SessionState est côté serveur, et si vous stockez une grande quantité de données dans la session, vous pouvez entraîner votre site web ou au serveur de bases de travailler plus dur pour traiter ces données.
Espère que cette aide.
OriginalL'auteur Clarence Klopfstein
Ne sais pas pourquoi cela fonctionne, mais j'ai eu un similair problème et résolu en mettant cette ligne dans le form_load:
où
OriginalL'auteur Eric