powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / ASP.NET меня расстраивает
7 сообщений из 7, страница 1 из 1
ASP.NET меня расстраивает
    #32446127
Blackmore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мучаюсь со 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
ASP.NET меня расстраивает
    #32446160
maxapet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потому, что страница, а с ней и 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
ASP.NET меня расстраивает
    #32447012
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем 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
ASP.NET меня расстраивает
    #32447037
maxapet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 tygra
Согласен, хорошее решение!
...
Рейтинг: 0 / 0
ASP.NET меня расстраивает
    #32447058
Фотография hDrummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если есть желание - прочтите это
Передача значений между веб-формами в ASP.NET
Как раз, имхо, для вас.
...
Рейтинг: 0 / 0
ASP.NET меня расстраивает
    #32450081
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To: maxapet

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

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


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