1

我有一个在 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();

基本上,每次单击按钮时,列表都会获得另一个添加的成员。但是每次运行代码时,新索引都会神秘地被删除,所以当我将所有意外添加到数据库时,并没有添加任何意外。而且我不能动态添加它们,因为事故数据库的输入之一是来自另一个表的身份,我在创建表时提取它,所以无论如何我都必须添加它们。

任何人都可以帮忙吗?PS这是我第一次发帖,如有乱七八糟的地方请见谅。

4

1 回答 1

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
于 2012-07-16T16:54:42.727 回答