0

我需要将一些列表存储到 ViewState 中。

我创建了一个类:

    [Serializable]
    public class TemplateTypeProcedureListViewState
    {
        public string Name { get; set; }
        public string ProcedureName { get; set; }
        public string ProcedureParameter { get; set; }
        public string ProcedureParameterType { get; set; }
    }

这是视图状态:

    private TemplateTypeProcedureListViewState TemplateTypeProcedureList
    {
        get { return (TemplateTypeProcedureListViewState)ViewState["TemplateTypeProcedureList"]; }
        set { ViewState["TemplateTypeProcedureList"] = value; }
    }

我给出这样的值:

   var templateTypeProcedureListViewState = new TemplateTypeProcedureListViewState
   {
       Name = ListNameTextBox.Text,
       ProcedureName = ListProcedureNameTextBox.Text,
       ProcedureParameter = ListProcedureParameterTextBox.Text,
       ProcedureParameterType = ListProcedureParameterTypeTextBox.Text
   };                

   ViewState.Add("TemplateTypeProcedureList", templateTypeProcedureListViewState);

现在,当我添加另一个项目时,第一个被覆盖(或删除,另一个(第二个)被保存)。是否可以将多个项目保存到 ViewState 中?你能给我推荐一些东西或某处吗?谢谢 :)

4

1 回答 1

2

好的,这是因为您将新项目保存在 Viestate 中,您没有将项目添加到保存在视图状态中的列表中。

您必须先检索列表,然后再添加项目,然后再保存。

 var list = TemplateTypeProcedureList.Add(new item);
 TemplateTypeProcedureList = list;

PS:这不是使用viestate的最佳方式,因为您的页面会变得越来越大。尽量避免在 ViewState 上保存太多信息。

于 2013-10-16T09:35:24.217 回答