2009-01-09 59 views
1

考慮下面的代碼:.net Viewstate可能會停止工作的可能情況是什麼?

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 

此代碼不特定網頁上我的應用程序工作。 View指令在Page指令中沒有關閉。我無法弄清楚發生了什麼事。 :\

哦,我只是想通了。看看你是否注意到它。

。 <

+0

我假設你沒有工作,你的意思是擊中:Response.Write(「Viewstate is empty。」)? – 2009-01-09 17:05:38

+0

ViewState隱藏字段是否寫在第一個GET客戶端上? – Todd 2009-01-09 17:05:47

+0

要刪除這個問題的尷尬 – Shawn 2009-01-09 17:14:45

回答

3

想通了,人卻改變了Page_Load事件處理Page.Init

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

您也可以從配置文件中關閉viewstate。

<configuration> 
    <appSettings> 
    <Pages EnableViewState="false" /> 
    </appSettings> 
</configuration> 
1

您是否確定要進行回發?

是否寫入「Viewstate is empty」?或者什麼都沒有?

1

既然你沒有回答自己的帖子...

我說你正在檢查的IsPostBack並在錯誤的階段訪問的ViewState:

Handles Me.Init 

這應該是

Handles Me.Load 

對不對?


對於在ASP.NET中調試這種頭痛我還想補充說,跟蹤通常可以幫助很多。

您可以啓用通過添加這web.config中跟蹤:

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

這將追加堆棧跟蹤和諸如此類的東西每一頁的末尾,這樣你就可以跟蹤執行和(希望)發現問題。

1

在我的情況下,我正在將數據寫入Page_Init上的ViewState。這些數據在Page_Load和Page_PreRender上顯示效果很好,但在生命週期結束時並未持續頁面。回發ViewState爲空後。

因此,請確保您在ViewState後寫入Page_Init。

相關問題