2014-05-09 5 views
1

Le problème est, chaque fois que je fais une publication, ma variable "valeur" ne conserve pas sa valeur précédente, et toujours le dictionnaire est vide. Il n'a aucune donnée enregistrée précédemment. Comment puis-je le faire pour enregistrer des données?La variable globale ne conserve pas sa valeur

Voici le code:

public partial class MyCart : System.Web.UI.Page 
     { 
      public Dictionary<string, string> value = new Dictionary<string, string>(); 
      protected void Page_Load(object sender, EventArgs e) 
      { 
        TextBox textbox = new TextBox();     
        textbox.TextChanged += textbox_TextChanged; 
        textbox.ID = "textbox" + p.IDProduct.ToString(); 
        Button button = new Button(); 
      } 

      void textbox_TextChanged(object sender, EventArgs e) 
      { 
        value.Add(((TextBox)sender).ID, ((TextBox)sender).Text); 
      } 
} 

Répondre

3

La variable global sont recréés sur Postback vous avez probablement besoin de mettre la variable ViewState pour conserver ses données entre postbacks.

Si les données sont petites, c'est bon avec ViewState mais si les données sont volumineuses, vous devrez peut-être penser qu'un support de stockage alternatif pourrait être une base de données.

Pour le faire avec ViewState vous auriez besoin de quelque chose comme.

public Dictionary<string, string> value = new Dictionary<string, string>(); 
protected void Page_Load(object sender, EventArgs e) 
{ 

    if(ViewState["valDic"] != null) 
     value = (Dictionary<string, string>)ViewState["valDic"]; 
    TextBox textbox = new TextBox();     
    textbox.TextChanged += textbox_TextChanged; 
    textbox.ID = "textbox" + p.IDProduct.ToString(); 
    Button button = new Button(); 
} 

void textbox_TextChanged(object sender, EventArgs e) 
{ 
    value.Add(((TextBox)sender).ID, ((TextBox)sender).Text); 
    ViewState["valDic"] = value; 
} 

état d'affichage est la méthode que le cadre de page ASP.NET utilise pour préserver les valeurs de page et de contrôle entre les allers-retours. Lorsque le balisage HTML pour la page est rendu, l'état actuel de la page et les valeurs qui doivent être conservées pendant la publication sont sérialisées en chaînes codées en base64. Cette information est ensuite placée dans la vue champ ou champs masqués, MSDN.

+0

Ok, je comprends cela. Je vous remercie ! –

+0

Vous êtes les bienvenus – Adil

+1

merci Adil Bhai .. Il m'a aidé beaucoup – kashif

1

Après postbacks les variables perdent la valeur car ils sont recreated..You peut dépendre des entrées cachées HTML ..

Markup:

<input id="Hidden1" type="hidden" runat="server" value=""/> 

code derrière:

Hidden1.value="something"; 
+0

merci. c'est un bon truc. –

+0

Vous êtes les bienvenus, ami .. – Jameem

Questions connexes