Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / ASP.NET меня расстраивает / 7 сообщений из 7, страница 1 из 1
17.03.2004, 18:58
    #32446127
Blackmore
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET меня расстраивает
Мучаюсь со Web page.

public class BadWordsList : System.Web.UI.Page
{
...
public int N;

private void Page_Load(object sender, System.EventArgs e)
{
if (!IsPostBack)
N = 5;
}

public void btnAdd_Click(object sender, System.EventArgs e)
{
N++;
}
}

Есть asp:button, к-рый по клику дергает btnAdd_Click().

При Page_Load() присвоение идет корректно. Но Почему внутри btnAdd_Click оказывается == 0 ??????
...
Рейтинг: 0 / 0
17.03.2004, 19:23
    #32446160
maxapet
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET меня расстраивает
Потому, что страница, а с ней и N , создаётся в памяти сервера заново при каждом к нему обращении, и N нигде не хранится, по умолчанию, между вызовами. Всё, что должно быть сохранено в необходимо записывать во ViewState явно. Можно определить N как свойство и сохранять в ViewState .
Код примерно такой:
Код: plaintext
1.
2.
3.
4.
public int N
{
    get { return (int)ViewState[ "n" ]; }
    set { ViewState[ "n" ] = value; }
}

Это же не Windows -приложение - страница не хранится в памяти сервера постоянно. После отправки клиенту память сервера освобождается от кода страницы.
Другая идеология, к этому нужно привыкнуть...
...
Рейтинг: 0 / 0
18.03.2004, 12:29
    #32447012
tygra
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET меня расстраивает
Зачем ViewState то? Не желательно его использовать в таких целях - он на/с клиента таскается, трафик жрет.

Есть хороший объект Session, вот с ним и надо работать, сессия хранится на сервере.
Тогда будет так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
public class BadWordsList : System.Web.UI.Page 
{ 
... 
//public int N; это не надо

private void Page_Load(object sender, System.EventArgs e) 
{ 
if (!IsPostBack) 
Session( "N" ) =  5 ; 
} 

public void btnAdd_Click(object sender, System.EventArgs e) 
{ 
int N = Session( "N" );
N++; 
Session( "N" ) = N;
} 
} 


-- Tygra's --
...
Рейтинг: 0 / 0
18.03.2004, 12:39
    #32447037
maxapet
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET меня расстраивает
2 tygra
Согласен, хорошее решение!
...
Рейтинг: 0 / 0
18.03.2004, 12:46
    #32447058
hDrummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET меня расстраивает
Если есть желание - прочтите это
Передача значений между веб-формами в ASP.NET
Как раз, имхо, для вас.
...
Рейтинг: 0 / 0
19.03.2004, 23:42
    #32450081
Sergey Ch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET меня расстраивает
To: maxapet

Только не забудьте, что время жизни сессии ограничено :(((
...
Рейтинг: 0 / 0
22.03.2004, 11:38
    #32451061
tygra
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET меня расстраивает
Его можно настроить, время жизни то

-- Tygra's --
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / ASP.NET меня расстраивает / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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