我有一个继承自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()之外还有一种解决方法吗?
答案 0 :(得分:0)
这最终成为我在返回的.Items
上实施.Add
以及与List<T>
互动的问题。外部对象Ridirector
未了解对其自己列表的更改。
我应该使用像ObservableCollection
这样的东西。我的解决方法是对.Items
进行分配,而不是使用.Add
。