После еще одного исследования я решил пойти по пути использования Session State.Есть несколько вариантов управления состоянием, но сессия была самой прямой и расширяемой для того, что я хотел сделать.
Для всех интересующихся здесь есть рабочее решение, показывающее массив списков, используемый в качестве переменной сеанса.
В документе я настраиваю базовое поле, кнопку и список для тестирования:
<table>
<tr>
<td>
<asp:ListBox ID="lstItems" runat="server" Width="200px" Height="120px" />
</td>
<td valign="top">
<asp:TextBox ID="myTextBox" Height="32px" runat="server" Width="200px" /> <asp:Button
Text="Add User" Width="80px" Height="32px" ID="myButton" OnClick="AddNames" runat="server" />
</td>
</tr>
</table>
Затем в коде позади я настраиваю следующее:
// быстрый примерсостояния сеанса, где мы вносим вклад в объект сеанса из пользовательского интерфейса // аналогично примеру с корзиной покупок // Вы можете использовать любой объект или тип, я просто использовал массив, поскольку он был быстрым
protected void Page_Load (object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
//Create the session variable and base it upon the array created ( this can be any type)
Session["myList"] = mainList;
}
}
protected void AddNames(object sender, EventArgs e)
{
//Here I set the array to = the Session. key point here is a session object must be cast to the approriate type on assignement
mainList = (ArrayList)Session["myList"];
//add to the array
mainList.Add(myTextBox.Text.ToString());
//bind to UI
lstItems.DataSource = mainList;
lstItems.DataBind();
myTextBox.Text = string.Empty;
}
ArrayList mainList = new ArrayList();
При работес переменными сеанса может также быть хорошей идеей проверить нулевую переменную сеанса (чтобы видеть, выходит ли переменная).В некоторых случаях невыполнение этого может привести к возникновению исключительной ситуации с нулевой ссылкой, если вы попытаетесь добавить сеанс до его создания.
Надеюсь, это поможет