2012-04-01 15 views
0

hallo im ein sehr einfachen Asp.net Anwendung Projekt zu tunC# asp.net Objektverweis verloren

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; 
    } 
} 
} 

das Problem ist, dass, wenn ich auf Button1 klicken, die button_clickSell alles nennen funktioniert gut, aber wenn ich auf button2 klicken die Aufruf button_clickView Produkte scheinen nicht mehr in der Market-Objekt, aber das ist ziemlich seltsam, weil in Markt-Objekt habe ich eine Liste von Produkten und m.outMarket in der ersten Zeit arbeiten.

Antwort

4

Das liegt daran, wie Seiten funktionieren. Jedes Mal, wenn Sie eine Anfrage oder ein Post-Back auf die Seite stellen, gehen die Werte in dieser Variablen verloren.

Sie müssen das in einer Sitzung oder etwas Ähnliches halten.

Hier ist ein sehr einfaches Beispiel für die Verwendung einer Sitzung.

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 bitte sehen Sie ein Beispiel machen? Wie speichere ich sie in einer Sitzung? zeig mich auf einen Link? –

+0

Ich habe ein einfaches Beispiel für eine Sitzung hinzugefügt. Sie sollten etwas mehr darüber lesen, wenn Sie sie noch nie zuvor gesehen haben. – Brian

+0

ich denke, es sollte so sein .. http://stackoverflow.com/questions/6380842/asp-net-do-changes-to-session-objects-persist –

0

können Sie diesen Beitrag auf MSDN lesen: ASP.NET Session State Overview

+0

Wenn ich alles in einer Datenbank speichere, ist es merkwürdig oder macht es Sinn? –

+0

gibt es viele Möglichkeiten, die Daten zu steinigen: Sitzung, Cookie, Cache oder Datenbank. Sie können einige Beiträge finden, um sie zu kampieren. – Dozer

0

Session verwendet werden sollte, wenn Informationen über die Seiten erforderlich ist. Jetzt liegen die beiden Knöpfe auf der gleichen Seite. So ist ViewState die beste Option.

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); 
} 
Verwandte Themen