2011-09-08 24 views
8

我有具有以下aspx页:存储一列表<int>在视图状态

  • 在每个
  • 链接按钮一个LinkBut​​ton甲中继器具有一个整数值
  • 用户的commandargument控制

这个想法是,当用户点击linkbutton时,commandarguement的值被存储在List中。没问题,你可能会想,但是我需要将值存储在usercontrol的列表中,而不是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); 

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

我敢肯定,它只是我设置的属性错了,但我不知道如何正确的IT ..

任何帮助将不胜感激。

感谢 铝

回答

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中

您的解决方案是坏

+0

绝对完美 - 令人惊奇,你不能怎么见木有时树!谢谢你的帮助。 – higgsy

相关问题