ViewState null при обратной передаче - PullRequest
0 голосов
/ 08 июня 2011

Итак, у меня есть список на моей странице и несколько текстовых полей.Через текстовые поля я могу добавить элемент в свой список (нажмите кнопку, он добавляет его к private List<string>, который затем устанавливается как ViewState, и список снова привязывается к данным).Мой список также находится в панели обновления, которая срабатывает при нажатии кнопки.Проблема: My Viewstate остается нулевым при обратной передаче, поэтому его каждый раз сбрасывают.

Какой-то код:

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

Есть идеи, как это исправить?Я что-то не так делаю?

1 Ответ

3 голосов
/ 08 июня 2011

btnAddIngredient_Click добавляет к « IngredienstList », а не « IngredientsList » (обратите внимание на написание).

Вы можете избежать такого рода опечаток, используя константу:

private const string IngredientsListViewStateKey = "IngredientsList";

затем ссылаясь на это так:

ViewState[IngredientsListViewStateKey] = _ingredientsList;
...