2015-06-08 49 views
0

我正在開發ASP.NET Webforms應用程序,並在使用WebUserControl時偶然發現了一個我不明白的行爲。對ViewState的WebUserControl更改無法在頁面級訪問

我WebUserControl放4串入的ViewState:

var projectCode = SelectedProject.Value; 
ViewState["ProjectCode"] = projectCode; 

var resourceId = SelectedResource.Value; 
ViewState["ResourceCode"] = resourceId; 

var indicatorId = SelectedIndicator.Value; 
ViewState["IndicatorCode"] = indicatorId; 

var areaCode = SelectedArea.Value; 
ViewState["AreaCode"] = areaCode; 

當多數民衆贊成在做,我的網頁應該從ViewState的這些值,但是ViewState中不包含任何項目,並返回null所有4個按鍵。

爲什麼頁面上的ViewState爲空?如果我不應該爲此使用ViewState,最好的方法是什麼傳遞價值觀和回來?

回答

2

因爲您正在使用的鍵是當前用戶控件的本地鍵:UserControl的視圖狀態中定義的「AreaCode」與頁面定義的「狀態碼」不同。 此行爲與Session 1不同。

您可以使用Session字典或在用戶控件上實現一些公共方法來檢索值。

+0

謝謝。我不知何故認爲ViewState和Session是一回事。但是爲了保持每個控件的狀態,有一個特殊的集合是有意義的 – Chrisi