2016-04-08 38 views
3

我有下面的代碼,ViewState的問題與asp.net

If Not Page.IsPostBack Then 
     ViewState("ItemID") = 0 
     If Not Request.QueryString("id") Is Nothing Then 
      ViewState("ItemID") = Request.QueryString("id") 
      ItemID = Integer.Parse(ViewState("ItemID")) 
     End If 
     If ItemID > 0 Then 
      ltrTitle.Text = "Edit Item" 
      bindEditData() 
     End If 
    End If 

當我試圖讓ViewState("ItemID")上按一下按鈕,它沒有返回。任何幫助?

+0

你是故意使用ViewState的,而不是會議? [SessionState和ViewState有什麼區別?](http://stackoverflow.com/a/733486/1115360) –

+0

可以給我們更多的信息,例如:在使用這段代碼的時候,bindEditData和body的主體按鈕點擊。 – Henrique

回答

1

我看到你的代碼不是回發方法。所以一旦你的頁面回發,viewstate值將會丟失。

請改變你的代碼,

ViewState("ItemID") = 0 
If Not Request.QueryString("id") Is Nothing Then 
    ViewState("ItemID") = Request.QueryString("id") 
    ItemID = Integer.Parse(ViewState("ItemID")) 
End If 
If Not Page.IsPostBack Then   
    If ItemID > 0 Then 
     ltrTitle.Text = "Edit Item" 
     bindEditData() 
    End If 
End If 
0

ViewState可能在您的頁面上關閉。該EnableViewState屬性設置爲falseViewStateMode屬性設置爲Disabled

<%@ Page EnableViewState="true" ... /> 
<%@ Page ViewStateMode="Enabled" ... /> 

這些是默認設置,而僅是必要的:

<%@ Page EnableViewState="false" ... /> 
<%@ Page ViewStateMode="Disabled" ... /> 

您可以通過更改這些設置啓用的ViewState如果ViewState在應用程序級別(在Web.config中)被禁用。