Есть ли простой способ хранить все необходимые глобальные переменные сразу в сессиях до запуска PostBack? Или я должен хранить их на каждом шаге, где я меняю их?
Я сделаю что-то вроде:
// Global variable.
bool test = true;
// Store all needed information in a session.
protected void Before_globalvariable_is_set_to_default_value(...)
{
Session["Test"] = test;
...
}
protected void Page_Load(object sender, EventArgs e)
{
if(IsPostBack)
{
//if(Session["Test"] != null)
//{
test = (bool)Session["Test"];
Session.Contents.Remove("Test");
//}
}
}
Возможно ли что-то подобное?
Дополнительная информация
На Page_Load (!IsPostBack)
я проверяю, получает ли пользователь больше видения, если он получает, я устанавливаю глобальную переменную в true. Позже в моем коде я проверяю, верна ли эта переменная, и добавляю дополнительные столбцы в GridView
.
Теперь, если PostBack
происходит, я не могу проверить эту переменную, потому что я теряю информацию. Я знал, что мне нужно хранить информацию в Session
. Если я установлю Session
в то время, когда для глобальной переменной задано значение true, у меня возникнут проблемы с тайм-аутом сеанса (если пользователь находится на сайте, но какое-то время ничего не делает). Поэтому я подумал, что будет хорошо, если я установлю Session незадолго до того, как потеряю информацию о глобальном var, и удаляю Session после повторной инициализации.
Это моя идея, но я не знаю, возможно ли что-то подобное.
Edit2:
Если я сделаю следующее, это сработает:
//Global variable
bool test = false;
protected void Page_PreRender(object sender, EventArgs e)
{
Session["Test"] = test;
}
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
test = (bool)Session["Test"]; // Session is true!!!
Session.Contents.Remove("Test");
}
else
{
test = true; // Set at the PageLoad the var to true.
}
}
Я немного сбит с толку, я думал PreRender
- это после PageLoad
, почему вдруг тестовая переменная верна, и если я уберу PreRender
, это не так?
Greetz