无法在页面级别访问WebUserControl对Viewstate的更改

时间:2015-06-08 11:22:37

标签: asp.net webforms viewstate

我正在开发一个ASP.NET Webforms应用程序,在使用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不包含任何项目,并为所有4个键返回null

为什么页面级别的ViewState为空?如果我不应该使用ViewState,那么最好的方法是向前传递值吗?

1 个答案:

答案 0 :(得分:2)

因为您使用的密钥对于当前用户控件是本地的:UserControl的视图状态中定义的“AreaCode”与为页面定义的密钥不同。 此行为与第一个会话不同。

您可以使用会话字典或在用户控件上实现一些公共方法来检索值。