Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Не могу понять...... / 10 сообщений из 10, страница 1 из 1
13.05.2004, 19:16
    #32517031
Максим Руденко
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу понять......
В общем есть страничка ASP.NET

В .cs файле объявляю переменную. Допустим типа string:
protected string str;

В Page_Load ее инициализирую:
if (!IsPostBack) {
str = "AAAAA";
}

Потом на какую нибудь кнопку вешаю обработчик события OnClick
и в нем вывожу эту строчку на экран.
Так проблема в чем. После postback значение переменной теряется. Если я так создаю какой-нибудь объект, то после postback при попытке обратится к нему вываливается Object reference not set to instance of object.

Если делаю переменную static, то все работает, но если работают два пользователя, то переменая одна и та же на двоих :).

Блин. Объясните кто нибудь в чем проблема плиз!
...
Рейтинг: 0 / 0
13.05.2004, 19:47
    #32517062
Max Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу понять......
В переменных значения хранить нежелательно. Я сам на это попал полгода назад.
Храни значения в контролах со свойством visible=false.
Но и тут они могут пропадать. Я ориентируюсь в таких случаях методом проб и ошибок.
Чтобы быть уверенным храни объекты не в переменных, а в БД.
Я наверно сам многого не понимаю, то таков ASP.NET...
...
Рейтинг: 0 / 0
13.05.2004, 20:00
    #32517070
nex
nex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу понять......
if (!isPostBack) { } значит, что все, что находится в фигурных скобках будет отрабатывать только в том случае, если страница загружается в первый раз (т.е. юзер приходит на нее с другой страницы, например). Далее любое событие, вызывающее PostBack (твоя кнопка, например) будет перезагружать страницу и isPostBack будет true.

Это дело можно обойти например вот так:

Код: plaintext
1.
2.
3.
str = "AAAAA";
if (!isPostBack) {
...
}

Теперь при каждой перезагрузке страницы str будет присваиваться нужное значение. Можно еще как-то через ViewState делать, но я до этого пока что не добрался :)
...
Рейтинг: 0 / 0
13.05.2004, 20:11
    #32517079
Max Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу понять......
To: Максим Руденко
(по секрету)
Тебя с этим вопросом (и другими по asp.net) приглашает на форум
www.aspnetmania.com
сам хозяин этого форума
...
Рейтинг: 0 / 0
14.05.2004, 11:08
    #32517518
tygra
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу понять......
А лучше - или правильнее - хранить значения такие в сессии

-- Tygra's --
...
Рейтинг: 0 / 0
14.05.2004, 11:11
    #32517523
Максим Руденко
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу понять......
Заработало так:

private void Page_Load(object sender, System.EventArgs e)
{
if (!IsPostBack)
{
MyClass mc;
mc = new MyClass();
mc.str = "Hello!";
Session["mc"] = mc;
}
}

private void Button1_Click(object sender, System.EventArgs e)
{
if (Session["mc"]!=null)
{
MyClass mc = (MyClass)Session["mc"];
Label1.Text = mc.str;
}
}
}
...
Рейтинг: 0 / 0
14.05.2004, 12:32
    #32517803
V Beker
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу понять......
Переменые USER'A надо хранить в Session
а страницы вглобальных переменых

хранить переменые в контролах это Bug
...
Рейтинг: 0 / 0
14.05.2004, 14:25
    #32518236
Max Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу понять......
2 V Beker
Что такое Bug?
И что такое Session?
...
Рейтинг: 0 / 0
16.05.2004, 13:40
    #32519370
voodoos
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу понять......
Можно значения зранить в статических переменных класса, скжаем есть у нас класс страницы, пишем там такое:

private static string _MyVariable;

public static string MyVariable
{
get
{
if(_MyVariable == null)
MyVariable = "Значение";

return _MyVariable;
}

В этом случае значение запишется в переменную при первом запросе, и будет там жить пока живёт апликейшн.
...
Рейтинг: 0 / 0
17.05.2004, 00:02
    #32519530
Ihor Bobak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу понять......
хранить надо либо в Session, либо в ViewState.
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Не могу понять...... / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]