2012-04-01 8 views
0

ハローイムを失ったC#の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; 
    } 
} 
} 

の問題は、私はbutton_clickSellのすべてが良い働きを呼び出すボタン1をクリックしたとき、私はボタン2をクリックしたときに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

okあなたは例を挙げることができますか?どのようにセッションにそれらを保存するのですか?私にリンクを教えてください? –

+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

セッション、Cookie、キャッシュ、またはデータベースのようなデータを石にする方法はたくさんあります。あなたはそれらをキャンプするためのいくつかの記事を見つけることができます。 – Dozer

0

Sessionを使用する必要があります。今、同じページにある2つのボタンの問題です。だから 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); 
} 
関連する問題