在列表中添加<;字符串>;覆盖以前的值C#

在列表中添加<;字符串>;覆盖以前的值C#,c#,asp.net,list,webforms,C#,Asp.net,List,Webforms,我有一个非常简单的C#程序要编写(针对ASP.NETWeb应用程序),它从文本框中获取输入,存储在列表中,然后显示在列表框中。这是我的代码: public partial class Form: System.Web.UI.Page { List<string> students = new List<string>(); protected void Page_Load(object sender, EventArgs e)

我有一个非常简单的C#程序要编写(针对ASP.NETWeb应用程序),它从文本框中获取输入,存储在列表中,然后显示在列表框中。这是我的代码:

public partial class Form: System.Web.UI.Page
{
        List<string> students = new List<string>();

        protected void Page_Load(object sender, EventArgs e)
        {
            ListBox.DataSource = students;
        }

        protected void Display_Click(object sender, EventArgs e)
        {
           if (this.students.Count != 0)
           {
                for (int x = 0; x < students.Count; x++)
                {
                    ListBox.Items.Add((x + 1).ToString() + ". " + students[x]);
                }
            }
        }

        protected void AddStudent_Click(object sender, EventArgs e)
        {    
            if(tbxStudentInput.Text != "")
            {
                students.Add(tbxStudentInput.Text);
                tbxStudentInput.Text = "";
            }
       }
}
公共部分类表单:System.Web.UI.Page
{
列出学生=新建列表();
受保护的无效页面加载(对象发送方、事件参数e)
{
ListBox.DataSource=学生;
}
受保护的无效显示\u单击(对象发送方,事件参数e)
{
如果(this.students.Count!=0)
{
for(int x=0;x

但是,每次添加到列表时,它都会覆盖上一个值。当我试图在列表框中显示存储的值时,它说count是0。请您告诉我,我做错了什么,没有正确存储列表中的值。谢谢

每次点击表单时,它都会创建新的学生实例,因为HTTP是无状态的

尝试移动学生的实例化,即列表学生=新列表();在静态控制器中

i、 e

静态页面()
{
学生=新列表();
}

理想的方法是从数据库中获取它。

每次加载页面时,您的列表都是空的。HTTP是无状态的,如果要保存用户状态,必须这样做。
static Page()
    {
      students = new List<string>();
    }