Asp.net 自定义类列表初始化

Asp.net 自定义类列表初始化,asp.net,listview,c#-4.0,Asp.net,Listview,C# 4.0,我有一个带有books对象的列表视图,其中有一个按钮,当我单击该按钮时,我想将该对象添加到我的自定义类(book)列表中,因此我在代码隐藏页面类中声明了一个列表: public List<Book> booklist; 但我得到“对象引用未设置为对象的实例”。错误:为了在每次回发中保留数据,我应该在哪里初始化列表?在您的解决方案中,您的列表在每次请求后都会被销毁。 更好的解决方案是将列表存储在会话中,以便在请求之间保持列表的分配 protected void Page_Load(o

我有一个带有books对象的列表视图,其中有一个按钮,当我单击该按钮时,我想将该对象添加到我的自定义类(book)列表中,因此我在代码隐藏页面类中声明了一个列表:

public List<Book> booklist;

但我得到“对象引用未设置为对象的实例”。错误:为了在每次回发中保留数据,我应该在哪里初始化列表?

在您的解决方案中,您的列表在每次请求后都会被销毁。 更好的解决方案是将列表存储在会话中,以便在请求之间保持列表的分配

protected void Page_Load(object sender, EventArgs e)
{
   if (Session["MyList"] == null)
       Session["MyList"] = new List<Book>();
   booklist = (List<Book>) Session["MyList"];
}
受保护的无效页面加载(对象发送方,事件参数e)
{
if(会话[“MyList”]==null)
会话[“MyList”]=新列表();
booklist=(List)会话[“MyList”];
}
    protected void DoTheCommand(object sender, ListViewCommandEventArgs e)
    {

        string commandName = e.CommandName;
        ListViewItem selectedItem = e.Item;

        if (commandName == "Foo")
        {
            string[] commandArgs = e.CommandArgument.ToString().Split(new char[] { ',' });
            Book b = new Book()
            {
                BookId = int.Parse(commandArgs[0]),
                Name = commandArgs[1],
                Author = commandArgs[2],
                Price = int.Parse(commandArgs[3])
            };
            booklist.Add(b);
        }
    } 
protected void Page_Load(object sender, EventArgs e)
{
   if (Session["MyList"] == null)
       Session["MyList"] = new List<Book>();
   booklist = (List<Book>) Session["MyList"];
}