2009-01-09 6 views
1

Consultez le code suivant:Quelles sont les situations possibles que .net Viewstate pourrait cesser de fonctionner?

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init 
     If Page.IsPostBack Then 
      If ViewState("test") IsNot Nothing Then 
       Response.Write((ViewState("test").ToString)) 
      Else 
       Response.Write("Viewstate is empty.") 
      End If 
     Else 
      ViewState("test") = "viewstate is working." 
     End If 
    End Sub 

Ce code ne fonctionne pas sur une page particulière dans ma demande. Viewstate n'est pas désactivé dans la directive Page. Je ne peux pas comprendre ce qui se passe. : \

Oh, je l'ai juste compris. Voyez si vous le remarquez.

. <

+0

Je suppose qu'en ne fonctionnant pas vous entendez frapper: Response.Write ("Viewstate is empty.")? –

+0

Le champ masqué ViewState est-il écrit sur le premier client GET? – Todd

+0

va supprimer cet embarassment d'une question – Shawn

Répondre

3

figured it out, quelqu'un avait changé l'événement Page_Load pour gérer Page.Init

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init 
+0

ne détestez-vous pas ceux-ci? –

1

Vous pouvez également désactiver viewstate à partir du fichier de configuration.

<configuration> 
    <appSettings> 
    <Pages EnableViewState="false" /> 
    </appSettings> 
</configuration> 
+0

j'ai voté mais ce n'est pas les issues qu'une étiquette de viewsstate est réellement rendue sur la page. Je me sens comme je deviens fou ici. – Shawn

1

Etes-vous sûr que vous faites une publication?

Est-il écrit "Viewstate is empty"? Ou juste rien?

1

Puisque vous n'avez pas répondu à votre propre poste ...

je dirais que vous vérifiez IsPostBack et l'accès ViewState aux mauvaises étapes:

Handles Me.Init 

Cela devrait être

Handles Me.Load 

à droite? Pour déboguer de tels maux de tête dans ASP.NET, je voudrais aussi ajouter que le traçage peut souvent aider beaucoup.

Vous pouvez activer le traçage en ajoutant ceci web.config:

<configuration> 
    <system.web> 
    <trace enabled="true" pageOutput="true" requestLimit="40" localOnly="false"/> 
    </system.web> 
</configuration> 

Ceci ajoutera la trace de la pile et ainsi de suite à la fin de chaque page, vous pouvez suivre l'exécution et (espérons) découvrir le problème.

+0

Doh! ...Je dois être plus rapide la prochaine fois ... – chakrit

1

Dans mon cas, j'écrivais des données dans ViewState sur Page_Init. Ces données s'affichaient bien sur Page_Load et Page_PreRender, mais elles n'étaient pas persistantes à la page à la fin du cycle de vie. Après la publication, ViewState était vide. Donc, assurez-vous d'écrire sur ViewState APR Page Page_Init.

Questions connexes