Я работаю над проектом класса и столкнулся с проблемой, которую не могу понять.У меня такое ощущение, что на самом деле это довольно легко, но я так долго работаю над вещами, что больше не могу думать прямо.
У меня есть страница входа, которая позволяет пользователю войти в систему и передать 2 элемента данныхследующая страница с использованием Context.Items и Server.Transfer.Вот фрагмент кода:
Context.Items["preferred"] = true;
Context.Items["pageNum"] = 1;
Server.Transfer("ProductsShelf.aspx");
На странице "ProductsShelf" я могу получить доступ к этим двум элементам и использовать данные следующим образом:
pageNumber = (int)Context.Items["pageNum"];
Затем я использую переключательоператор с pageNumber для отображения определенной информации:
switch (pageNumber)
{
case 1:
imgProd.ImageUrl = "assets/laptop.bmp";
lbl_Name.Text = "Laptop";
lbl_desc.Text = "This is a cheap laptop!";
lbl_price.Text = "199.99";
break;
}
Очевидно, что есть другие записи, которые я опускаю.Я хочу нажать следующую или предыдущую кнопку и использовать это событие для изменения данных Context.Items ["pageNum"], чтобы в событии Page_Load () использовались разные данные в операторе switch.Надеюсь, что это имеет смысл.Вот одно из событий нажатия кнопки:
protected void btn_Prev_Click(object sender, EventArgs e)
{
if (pageNumber == 1 || pageNumber == 2)
{
Context.Items["pageNum"] = 1;
}
else if (pageNumber == 3)
{
Context.Items["pageNum"] = 2;
}
Context.Items["preferred"] = preferredCustomer;
Server.Transfer("ProductsShelf.aspx");
}
Проблема состоит в том, что до того, как событие нажатия кнопки сработает, форма отправляет и очищает значения Context.Items и pageNumber.Это означает, что оператор кнопки if никогда не срабатывает, и это приводит к:
pageNumber = (int)Context.Items["pageNum"];
Нулевому значению, выбрасыванию исключения и очень огорчениюИтак, мой вопрос, как я могу сохранить ценности?Должен ли я переключиться на Response.Redirect и иметь что-то вроде? Page = 1 в URL?Или это будет ясно, когда форма сообщения?Надеюсь, я не делаю это полностью неправильно.
Если TL; DR, вот краткая сводка:
- Context.Items имеет 2 значения, переданные с Server.Transfer
- Эти значения определяют то, что будет показано на следующей странице
- Форма очищает Context.Items и переменные перед тем, как сработает событие нажатия кнопки
- Значения равны NULL, оператор if не выполняется,и приложение выдает исключение
- Вопрос: как мне сохранить эти значения?
Большое спасибо.:)