我有一个全局变量,我在ASP.NET网页更新面板中引用它。以下是更新面板中发生的情况:
accidentListType.Add(Convert.ToString(AccidentDescription.SelectedItem));
if (Atfault.Checked)
{
accidentAtFault.Add("True");
}
else accidentAtFault.Add("False");
DateTime newDate = new DateTime(Convert.ToInt32(accidentyear.Text), Convert.ToInt32(accidentmonth.Text), 1);
accidentListDate.Add(newDate);
TestAccidentLabel.Text = "Success! " + newDate.ToString();
基本上,每次点击一个按钮时,列表会获得另一个添加的成员。但是每次它运行代码时,新索引都会被神秘地删除,所以当我将所有事故添加到数据库时,没有任何意外添加。我无法动态添加它们,因为事故数据库的一个输入是来自另一个表的标识,我在创建表时将其拉出来,所以我必须在完成之后将它们全部添加。
有人可以帮忙吗? 附:这是我第一次发帖,所以如果它是凌乱或任何东西,请道歉。
答案 0 :(得分:1)
你遗失了两件事。虽然您的列表是全局的,但是每次请求后都会销毁页面对象,除非您将列表保留在Session中,否则这些值将不会持久存在。此外,您必须重复使用会话中保留的列表来添加任何新值。做如下。
//at the start of block
//check if there is anything in Session
//if not, create a new list
if(Session["accidentListType"] == null)
accidentListType = new List<string>();
else //else a list already exists in session , use this list and add object to this list
accidentListType = Session["accidentListType"] as List<string>;
//do your processing, as you are doing
//and at the end of bloack store the object to the session
Session["accidentListType"] = accidentListType