我有一个aspx页面,其中包含以下内容:
这个想法是当用户点击链接按钮时,commandarguement的值存储在List中。你可能没有问题,但是我需要将值存储在usercontrol中的List中,而不是存储在ASPX页面中。列表需要在回发中保留,因此它也需要存储在视图状态中。
所以我在用户控件中创建了一个公共属性,如下所示:
public List<int> ImageString {
get {
if (this.ViewState["ImageString"] != null) {
return (List<int>)(this.ViewState["ImageString"]);
}
return new List<int>();
}
set { this.ViewState["ImageString"] = value; }
}
然后我希望在我的aspx页面中我可以添加一行代码来为列表添加一个值,如下所示:
this.LightBoxControl.ImageString.Add(value);
我遇到的问题是该值实际上从未添加到列表中。计数始终为零。
我确定这只是因为我设置了错误的属性,但我不确定如何改正它..
非常感谢任何帮助。
由于 人
答案 0 :(得分:17)
你的得主是错的。这是正确的变体:
get {
if (this.ViewState["ImageString"] == null) {
this.ViewState["ImageString"] = new List<int>();
}
return (List<int>)(this.ViewState["ImageString"]);
}
在这里,您首先要检查ViewState中是否有您需要的内容,如果没有,请将其添加到那里。然后从ViewState返回项目 - 保证在那里。
您的解决方案很糟糕,因为它没有将new List<int>()
放入ViewState