维护回发之间的通用列表

Ste*_*ven 5 .net c# asp.net webforms

这是我的代码隐藏中的内容:

List<Event> events = new List<Event>();

protected void Page_Load(object sender, EventArgs e)
{

}

protected void AddEvent_Click(object sender, EventArgs e)
{
    Event ev = new Event();

    ev.Name = txtName.Text;

    events.Add(ev);
}
Run Code Online (Sandbox Code Playgroud)

我想在每次单击"添加"按钮时将项添加到列表中,但是每次回发后都会重置列表.如何在回发之间保留列表中的数据?

Cod*_*lla 9

我经常使用这样的技术,但请记住,这可能会导致您的viewstate(渲染到浏览器)变得相当大:

public List<Event> Events 
{
  get { return (List<Event>)ViewState["EventsList"]; }
  set { ViewState["EventsList"] = value; }
}
Run Code Online (Sandbox Code Playgroud)

然后当你想使用列表时,你会做这样的事情:

public void AddToList()
{
    List<Event> events = Events; // Get it out of the viewstate
    ... Add/Remove items here ...
    Events = events; // Add the updated list back into the viewstate
}
Run Code Online (Sandbox Code Playgroud)

另请注意,您的Event类需要是可序列化的,但这通常就像将[Serializable]属性添加到类中一样简单(除非它是一个非常复杂的类).