2015-06-08 22 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