2012-04-01 2 views
0

привет им делать очень простой проект ASP.Net приложениес ссылкой на объект # asp.net потерял

namespace WebApplication1 
{ 
public partial class WebUserControl1 : System.Web.UI.UserControl 
{ 
    market m = new market(); 

    protected void Page_Load(object sender, EventArgs e) 
    { 


    } 
    protected void button_clickSell(object sender, EventArgs e) 
    { 


     float price = float.Parse(this.BoxIdPrezzo.Text); 

     m.insertProd("xxx", 10, "yyy"); 
     m.addOfferForProd("ooo", 5, "gggg"); 
     m.insertProd(this.BoxIdDescrizione.Text,price,this.BoxIdUtente.Text); 
     String s; 
     m.outMarket(out s); 
     this.Output.Text = s; //the output here work good 
     this.Output.Visible = true; 

    } 
    protected void button_clickView(object sender, EventArgs e) 
    { 
     String s; 
     m.outMarket(out s); 
     this.Output.Text = s; // here seem to have lost the reference to product why? 
     this.Output.Visible = true; 
    } 
} 
} 

проблема заключается в том, что, когда я нажимаю на Button1, которые называют button_clickSell все работает хорошо, но когда я нажимаю на button2, который call button_clickView, похоже, больше не находятся в объекте Market, но это довольно странно, потому что в рыночном объекте у меня есть список продуктов, а m.outMarket в первый раз работает.

ответ

4

Это из-за того, как работают страницы. Каждый раз, когда вы делаете запрос или пост-назад на страницу, значения будут потеряны в этой переменной.

Вам нужно будет провести это в сеансе или что-то подобное.

Вот очень простой пример использования сеанса.

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (Session["Collection"] == null) 
     { 
      Session["Collection"] = new List<int>(); 
     }//if 
    } 
    protected void button_clickSell(object sender, EventArgs e) 
    { 
     List<int> collection = (List<int>)Session["Collection"]; 
     collection.Add(7); 
     collection.Add(9); 
    } 
    protected void button_clickView(object sender, EventArgs e) 
    { 
     List<int> collection = (List<int>)Session["Collection"]; 
     collection.Add(10); 
    } 
+0

ОК, пожалуйста, можете ли вы привести пример? как хранить их в сеансе? назовите меня ссылкой? –

+0

Я добавил базовый пример сеанса. Вы должны прочитать их немного больше, если вы никогда их не видели раньше. – Brian

+0

Я думаю, что это должно быть так. Http://stackoverflow.com/questions/6380842/asp-net-do-changes-to-session-objects-persist –

0

Вы можете просмотреть этот пост на MSDN: ASP.NET Session State Overview

+0

если я храню все в базе данных, это странно или это имеет смысл? –

+0

есть много способов каменных данных: сеанс, куки, кеш или база данных. Вы можете найти несколько сообщений для их размещения в лагере. – Dozer

0

Session следует использовать, когда требуется информация через страниц. Теперь вопрос для двух кнопок, лежащих на одной странице. Итак, ViewState - лучший вариант.

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (ViewState["Collection"] == null) 
    { 
      ViewState["Collection"] = new List<int>(); 
    }//if 
} 
protected void button_clickSell(object sender, EventArgs e) 
{ 
    List<int> collection = (List<int>)ViewState["Collection"]; 
    collection.Add(7); 
    collection.Add(9); 
} 
protected void button_clickView(object sender, EventArgs e) 
{ 
    List<int> collection = (List<int>)ViewState["Collection"]; 
    collection.Add(10); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^