2011-06-08 2 views
0

J'ai donc une liste sur ma page et quelques champs de texte. À travers les champs de texte, je peux ajouter un élément à ma liste (cliquez sur le bouton, il l'ajoute à un private List<string> qui est ensuite défini comme ViewState et la liste est de nouveau databound). Ma liste est également dans un panneau de mise à jour qui est déclenché sur l'événement Click du bouton. Problème: My Viewstate reste null sur une publication afin qu'il soit réinitialisé à chaque fois.ViewState null sur la publication

Certains code:

private List<IngredientData> _ingredientsList; 

     protected void Page_Load(object sender, EventArgs e) 
     { 
      // prepare ingredient lists 
      _ingredientsList = new List<IngredientData>(); 

      if (Page.IsPostBack) 
      { 
       if (ViewState["IngredientsList"] != null) 
       { 
        _ingredientsList = (List<IngredientData>) ViewState["IngredientsList"]; 
       } 
      } 

      lstIngredients.DataSource = _ingredientsList; 
      lstIngredients.DataTextField = "Text"; 
      lstIngredients.DataValueField = "Name"; 
      lstIngredients.DataBind(); 
     } 

     protected void btnAddIngredient_Click(object sender, EventArgs e) 
     { 
      _ingredientsList.Add(new IngredientData { Name = txtIngredientName.Text, Quantity = txtUnitQuantity.Text, Unit = lstUnits.SelectedValue }); 

      ViewState["IngredienstList"] = _ingredientsList; 
      lstIngredients.DataSource = _ingredientsList; 
      lstIngredients.DataBind(); 
     } 

Toute idée comment je peux résoudre ce problème? Est-ce que je fais quelque chose de mal?

Répondre

3

btnAddIngredient_Click est Ajoutant à "IngredienstList" non "IngredientsList" (notez l'orthographe).

Vous pouvez éviter ce genre de faute de frappe en utilisant une constante:

private const string IngredientsListViewStateKey = "IngredientsList"; 

se référant ensuite comme ceci:

ViewState[IngredientsListViewStateKey] = _ingredientsList; 
+1

Dieu que je me sens terrible ... Moi et mon collègue ont été regardant cela depuis des siècles et ont manqué de manquer cela ... Fonctionne parfaitement maintenant, merci! – Fverswijver

+3

@Fverswijver: les constantes sont votre ami :) – Town

+0

+1 Vous obtenez un excellent point. Génial –

Questions connexes