控制优化离开

时间:2015-12-31 00:22:38

标签: asp.net c#-4.0

我有一个继承自Page的asp.net类。然后我有一个复选框列表和一个按钮。使用Load事件处理程序上的Add手动填充复选框列表。然后该按钮获取复选框列表项并确定重定向的位置。

class WebPage : Page
{
public Redirector Redirector {get; set;}

// Added on the .aspx Page
protected CheckBoxList CheckBoxList {get; set;}
protected Button ClickMe {get; set;}

void Page_Load(object s, EventArgs args)
{
  if (!Page.IsPostBack)
  {
    CheckBoxList.Add(new ListItem("a", 1));
    CheckBoxList.Add(new ListItem("b", 2));
  }
}

void handler(object s, args)
{
  Redirector.Items.Clear();
  foreach (ListItem item in CheckBoxList.Items.Cast<ListItem>().Where(x => x.Selected).ToList())
            {
                Redirector.Items.Add(item.Value);
            }
  Response.Redirect(Redirector.Url);
}

}

我遇到的问题是CheckBoxList正在逐步优化,以便重定向器。项目未更新,而这些项目不会更新Redirector.Url(使用Items)。我很确定它会被淘汰掉,因为如果我设置一个断点并手动扩展它的属性就可以了;或者做一个Debug.WriteLine。我猜这是因为CheckBoxList的值永远不会再次用于新的加载。

除了执行Console.WriteLine()之外还有一种解决方法吗?

1 个答案:

答案 0 :(得分:0)

这最终成为我在返回的.Items上实施.Add以及与List<T>互动的问题。外部对象Ridirector未了解对其自己列表的更改。

我应该使用像ObservableCollection这样的东西。我的解决方法是对.Items进行分配,而不是使用.Add