c# - Comment obtenir la valeur de ViewState intégré et codé?

Translate

J'ai besoin de saisir la représentation encodée en base64 de ViewState. De toute évidence, cela ne serait disponible que assez tard dans le cycle de vie de la demande, ce qui est normal.

Par exemple, si la sortie de la page comprend:

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

J'ai besoin d'un moyen côté serveur pour obtenir la valeur"/wEPDwUJODU0Njc5MD...=="

Pour clarifier, j'ai besoin de cette valeur lorsque la page est en cours de rendu, pas sur PostBack. Par exemple, j'ai besoin de connaître la valeur ViewState qui estexpédiéau client, pas le ViewState que je reçois d'eux.

This question and all comments follow the "Attribution Required."

Toutes les réponses

Translate

Rex, je soupçonne que les solutionscompresser le ViewState- ils récupèrent ViewState sur le serveur avant qu'il ne soit envoyé au client et le gzip. C'est exactement là que vous voulez être.

La source
Translate

Regarde çaarticle de blogoù l'auteur décrit une méthode pour remplacer le comportement par défaut pour générer le ViewState et montre à la place comment l'enregistrer sur l'objet Session du serveur.

Dans ASP.NET 2.0, ViewState est enregistré par un descendant de la classe PageStatePersister. Cette classe est une classe abstraite pour l'enregistrement et le chargement de ViewsState et il existe deux descendants implémentés de cette classe dans .Net Framework, nommés HiddenFieldPageStatePersister et SessionPageStatePersister. Par défaut, HiddenFieldPageStatePersister est utilisé pour enregistrer / charger les informations de ViewState, mais nous pouvons facilement faire fonctionner SessionPageStatePersister et enregistrer ViewState dans l'objet Session.

Bien que je n'ai pas testé son code, il semble montrer exactement ce que vous voulez: un moyen d'accéder au code ViewState tout en étant toujours sur le serveur, avant la publication.

La source
Translate

J'ai activé la compression en suivant des articles similaires à ceux publiés ci-dessus. La clé pour accéder à ViewState avant que l'application ne l'envoie remplace cette méthode;

protected override void SavePageStateToPersistenceMedium(object viewState)

Vous pouvez appeler la méthode de base dans ce remplacement, puis ajouter la logique supplémentaire dont vous avez besoin pour gérer ViewState.

La source