2015-12-09 8 views
0

Я пытаюсь добавить динамически элементы в классе List<> в asp.net. В Winforms это работает, но на ASP.NET это не так. Это мой код.List.Add reset on asp.net

class artikuj 
{ 
    public int artId { get; set; } 
    public double sasia { get; set; } 
} 

List<artikuj> art = new List<artikuj>(); 

protected void btn_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     art.Add(new artikuj 
     { 
      artId = int.Parse(DropDownListArikujt.SelectedValue), 
      sasia = double.Parse(tbSasia.Text) 
     }); 

     Label1.Text = art.Count.ToString(); 
    } 
    catch(Exception ex) 
    { 
     Response.Write(ex); 
    } 

} 

Каждый раз, когда я нажимаю кнопку, список сбрасывается, и новый элемент добавляется. Любая идея, почему эта ошибка возникает? Я старался, но не добился успеха. :/

+1

Все объекты (или элементы управления) расположены в конце листа, поэтому когда страница отображается как HTML и отправляется клиенту. Так работает HTTP. В противном случае ASP.NET должен будет хранить все в памяти. Учтите, что у вас тысячи пользователей и сайтов. –

ответ

3

Это одна из первых вещей, которые вызывают людей, которые привыкли писать настольные приложения, и перейти к созданию веб-приложений. Это выглядит, как и все кодировки, должны быть одинаковыми, но первое, что вы узнали - ASP.NET без гражданства.

Это означает, что каждый раз, когда на вашу страницу приходит новый запрос, создается новый экземпляр страницы, а вместе с ней и список, содержащий список экземпляров.

Есть many ways to maintain state between requests с ASP.NET, но они должны быть расширенными и широкими, чтобы ответить на них. Вы можете начать просмотр с Getting started with ASP.NET

+0

Чтобы обойти это, вы можете сбросить общий список в мешок ViewState (осторожно, он может стать большим) для передачи назад и вперед или сохранить содержимое списка в файл cookie. В противном случае, список необходимо будет создать, когда его необходимо использовать – Feuerwehrmann

+0

@Feuerwehrmann, ах этого не знал. :/Что вы подразумеваете под «осторожностью, он может стать большим» в представлении? – coldfire

+0

@Feuerwehrmann, я думал о сессии viewstate, но я не думаю, что это хороший выбор. – coldfire