从会话变量的下拉列表中存储选定的值

时间:2014-04-01 22:33:53

标签: c# asp.net drop-down-menu session-variables

我正在尝试将选定项目中的项目的选定值存储到会话变量中,然后选择它并按下按钮将其添加到会话变量中。我的问题是,有没有办法将多个选择存储到具有相同下拉列表的不同会话变量中。每个会话变量具有相同的值,我不确定如何将每个选定的值保存到新的会话变量中。

protected void DropDownListAddNumber_SelectedIndexChanged(object sender, EventArgs e)
{
    Session["selectionOne"] = DropDownListAddNumber.Items.FindByValue(DropDownListAddNumber.SelectedValue);
    Session["selectionTwo"] = DropDownListAddNumber.Items.FindByValue(DropDownListAddNumber.SelectedValue);
    Session["selectionThree"] = DropDownListAddNumber.Items.FindByValue(DropDownListAddNumber.SelectedValue);
    Session["selectionFour"] = DropDownListAddNumber.Items.FindByValue(DropDownListAddNumber.SelectedValue);
}

1 个答案:

答案 0 :(得分:0)

如果多选不是您的问题,那么按每个变量存储它将无法很好地扩展。如果要将每个选择存储到会话中,可以将字符串列表存储到会话中。 (利用项目按照我们将它们插入列表的顺序存储的事实)

protected void DropDownListAddNumber_SelectedIndexChanged(object sender, EventArgs e)
{
 List<string> sessionList = GetSessionVariable();
 sessionList.Add(DropDownListAddNumber.Items.FindByValue
                 (DropDownListAddNumber.SelectedValue));
}

// you can access the selected values from the list
// if sessionList.Any(), then sessionList.Last() will contain 
// the last selected value.. etc.

private List<string> GetSessionVariable()
{
 var list = Session["SelectionValuesList"] as List<string>;

 if (list == null)
 {
  list = new List<string>();
  Session["SelectionValuesList"] = list;
 } 

 return list;
}

OR

如果您仍想使用多个会话变量,则需要执行某种计数器。 将创建多个变量。这很容易出错。

int lastCounter = 0;

protected void DropDownListAddNumber_SelectedIndexChanged(object sender, EventArgs e)
{
    ++lastCounter;
    Session["selection" + lastCounter] = DropDownListAddNumber.Items
                                        .FindByValue(DropDownListAddNumber.SelectedValue);
}

// you can access last value as
// var lastSelectedValue = Session["selection" + lastCounter];