在viewstate中存储List <int> </int>

时间:2011-09-08 09:56:52

标签: c# asp.net user-controls properties arraylist

我有一个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);

我遇到的问题是该值实际上从未添加到列表中。计数始终为零。

我确定这只是因为我设置了错误的属性,但我不确定如何改正它..

非常感谢任何帮助。

由于 人

1 个答案:

答案 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