我有这个列表视图,其中有书籍对象,有一个按钮,当我点击按钮时,我想将该对象添加到我的自定义类(书)列表,所以我在我的代码后面的页面类中声明了一个列表:
public List<Book> booklist;
我在页面加载方法中初始化它:
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
booklist = new List<Book>();
}
}
并在我的列表视图中添加项目Do Command事件方法:
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);
}
}
但我得到'对象引用没有设置为对象的实例。'错误我应该在哪里初始化我的列表,以便在每次回发中保留我的数据?
答案 0 :(得分:1)
在您的解决方案中,您的列表会在每次请求后销毁。 更好的解决方案是将列表存储在会话中,以便列表保持在请求之间分配
protected void Page_Load(object sender, EventArgs e)
{
if (Session["MyList"] == null)
Session["MyList"] = new List<Book>();
booklist = (List<Book>) Session["MyList"];
}