发生更新部分后,列表将被删除

时间:2012-07-16 16:30:37

标签: c# asp.net .net global-variables

我有一个全局变量,我在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();

基本上,每次点击一个按钮时,列表会获得另一个添加的成员。但是每次它运行代码时,新索引都会被神秘地删除,所以当我将所有事故添加到数据库时,没有任何意外添加。我无法动态添加它们,因为事故数据库的一个输入是来自另一个表的标识,我在创建表时将其拉出来,所以我必须在完成之后将它们全部添加。

有人可以帮忙吗? 附:这是我第一次发帖,所以如果它是凌乱或任何东西,请道歉。

1 个答案:

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