C# 如何在按钮单击事件期间在对象列表中保留和添加项目

C# 如何在按钮单击事件期间在对象列表中保留和添加项目,c#,asp.net,ajax,C#,Asp.net,Ajax,当用户单击按钮时,我想将新项目添加到我的常规列表中,但每个列表只包含最后引入的项目,似乎在每个按钮单击期间,列表都会重新初始化:( 这是代码的一部分: List<ProdusBon> listaProduseBon = new List<ProdusBon>(); protected void Page_Load(object sender, EventArgs e) { } protected void Button1_Click(object sender, E

当用户单击按钮时,我想将新项目添加到我的常规列表中,但每个列表只包含最后引入的项目,似乎在每个按钮单击期间,列表都会重新初始化:(

这是代码的一部分:

 List<ProdusBon> listaProduseBon = new List<ProdusBon>();

protected void Page_Load(object sender, EventArgs e)
{
}

protected void Button1_Click(object sender, EventArgs e)
{
    listaProduseBon.Add(new ProdusBon(-1, Int32.Parse(TextBox2.Text), -1, Int32.Parse (ListBox1.SelectedValue)));
}
List listaProduseBon=new List();
受保护的无效页面加载(对象发送方、事件参数e)
{
}
受保护的无效按钮1\u单击(对象发送者,事件参数e)
{
添加(新的ProdusBon(-1,Int32.Parse(TextBox2.Text),-1,Int32.Parse(ListBox1.SelectedValue));
}
我还尝试使用以下代码:

 List<ProdusBon> listaProduseBon = null;

protected void Page_Load(object sender, EventArgs e)
{
 if (!Page.IsPostBack)
    {
       listaProduseBon = new List<ProdusBon>();
    }
}

protected void Button1_Click(object sender, EventArgs e)
{
    listaProduseBon.Add(new ProdusBon(-1, Int32.Parse(TextBox2.Text), -1, Int32.Parse (ListBox1.SelectedValue)));
}
List listaProduseBon=null;
受保护的无效页面加载(对象发送方、事件参数e)
{
如果(!Page.IsPostBack)
{
listaProduseBon=新列表();
}
}
受保护的无效按钮1\u单击(对象发送者,事件参数e)
{
添加(新的ProdusBon(-1,Int32.Parse(TextBox2.Text),-1,Int32.Parse(ListBox1.SelectedValue));
}
但在本例中,引发了空引用异常

我必须保留列表中的所有项目,而不仅仅是最后一个项目,当引发click事件时,将向列表中添加一个新项目

Default.aspx中的所有控件都获得了默认值,只有ListBox的“Enable AutoPostBack”设置为true,但我相信这不会导致这种行为

我不知道在这种情况下如何保存列表中的项目,如果您知道如何保存,请帮助我


谢谢!

成员变量在页面加载之间丢失。如果希望变量在加载之间保持相同的值,可以将其存储在会话中

List<ProdusBon> listaProduseBon
{
   get { return (List<ProdusBon>) Session["ProdusBon"]; }
   set { Session["ProdusBon"] = value; }
}

protected void Page_Load(object sender, EventArgs e)
{
    if (listaProduseBon == null) listaProduseBon = new List<ProdusBon>();
}

protected void Button1_Click(object sender, EventArgs e)
{
    listaProduseBon.Add(new ProdusBon(-1, Int32.Parse(TextBox2.Text), -1, Int32.Parse (ListBox1.SelectedValue)));
}
List listaProduseBon
{
获取{return(List)会话[“ProdusBon”];}
设置{Session[“ProdusBon”]=value;}
}
受保护的无效页面加载(对象发送方、事件参数e)
{
如果(listaProduseBon==null)listaProduseBon=new List();
}
受保护的无效按钮1\u单击(对象发送者,事件参数e)
{
添加(新的ProdusBon(-1,Int32.Parse(TextBox2.Text),-1,Int32.Parse(ListBox1.SelectedValue));
}

成员变量在页面加载之间丢失。如果希望变量在加载之间保持相同的值,可以将其存储在会话中

List<ProdusBon> listaProduseBon
{
   get { return (List<ProdusBon>) Session["ProdusBon"]; }
   set { Session["ProdusBon"] = value; }
}

protected void Page_Load(object sender, EventArgs e)
{
    if (listaProduseBon == null) listaProduseBon = new List<ProdusBon>();
}

protected void Button1_Click(object sender, EventArgs e)
{
    listaProduseBon.Add(new ProdusBon(-1, Int32.Parse(TextBox2.Text), -1, Int32.Parse (ListBox1.SelectedValue)));
}
List listaProduseBon
{
获取{return(List)会话[“ProdusBon”];}
设置{Session[“ProdusBon”]=value;}
}
受保护的无效页面加载(对象发送方、事件参数e)
{
如果(listaProduseBon==null)listaProduseBon=new List();
}
受保护的无效按钮1\u单击(对象发送者,事件参数e)
{
添加(新的ProdusBon(-1,Int32.Parse(TextBox2.Text),-1,Int32.Parse(ListBox1.SelectedValue));
}

在按钮上单击事件,首先绑定列表按钮,然后从文本框中添加新项目

protected void Button1_Click(object sender, EventArgs e)
{
    //code to bind your list goes here
    listaProduseBon.Add(new ProdusBon(-1, Int32.Parse(TextBox2.Text), -1, Int32.Parse (ListBox1.SelectedValue)));
}

在按钮上单击事件,首先绑定列表按钮,然后从文本框中添加新项

protected void Button1_Click(object sender, EventArgs e)
{
    //code to bind your list goes here
    listaProduseBon.Add(new ProdusBon(-1, Int32.Parse(TextBox2.Text), -1, Int32.Parse (ListBox1.SelectedValue)));
}

您好,感谢您发布我正在使用此版本,但我遇到了以下异常:[A]System.Collections.Generic.List
1[ProdusBon]无法强制转换到[B]System.Collections.Generic.List
1[ProdusBon].类型A源于“C:\Windows\assembly\GAC_32\mscorlib\2.0.0_uB77A5C561934E089\mscorlib.dll”上下文“LoadNone”中的“mscorlib,版本=2.0.0.0,区域性=中性,PublicKeyToken=b77a5c561934e089\mscorlib.dll”。类型B源于“LoadNone”上下文中的“mscorlib,版本=2.0.0.0.0,区域性=中性,PublicKeyToken=B77A561934E089”r'位于位置“C:\Windows\assembly\GAC_32\mscorlib\2.0.0.0\uuuu b77a5c561934e089\mscorlib.dll”。@Mircea代码没有问题。解决方案中还有其他问题。请尝试“构建>清理解决方案”,然后“构建>构建解决方案”。@Mircea事实上,如果问题仍然存在,请开始一个新问题。因为这个问题肯定是not因为我给出的答案-这是一个构建错误,因为同一类型和同一DLL之间存在奇怪的冲突。奇怪。嗨,Roy,是的,我也在调试中检查了代码,通常它工作正常,似乎只有在同一会话中启动并重新启动解决方案,如果我也重新启动浏览器,这才不会发生在同一个打开的会话中停止并重新启动解决方案(网站)之前,请继续。您好,感谢您发布我正在使用此版本,但我遇到此异常:[A]System.Collections.Generic.List
1[ProdusBon]无法强制转换到[B]System.Collections.Generic.List
1[ProdusBon].类型A源于“C:\Windows\assembly\GAC_32\mscorlib\2.0.0_uB77A5C561934E089\mscorlib.dll”上下文“LoadNone”中的“mscorlib,版本=2.0.0.0,区域性=中性,PublicKeyToken=b77a5c561934e089\mscorlib.dll”。类型B源于“LoadNone”上下文中的“mscorlib,版本=2.0.0.0.0,区域性=中性,PublicKeyToken=B77A561934E089”r'位于位置“C:\Windows\assembly\GAC_32\mscorlib\2.0.0.0\uuuu b77a5c561934e089\mscorlib.dll”。@Mircea代码没有问题。解决方案中还有其他问题。请尝试“构建>清理解决方案”,然后“构建>构建解决方案”。@Mircea事实上,如果问题仍然存在,请开始一个新问题。因为这个问题肯定是not因为我给出的答案-这是一个构建错误,因为同一类型和同一DLL之间存在奇怪的冲突。奇怪。嗨,Roy,是的,我也在调试中检查了代码,通常它工作正常,似乎只有在同一会话中启动并重新启动解决方案,如果我也重新启动浏览器,这才不会发生在同一个打开的会话中停止并重新启动解决方案(网站)之前,请继续。您好,我想在其他事件中使用此集合,因此此集合仅对此事件不被视为“本地”变量。您好,我想在其他事件中使用此集合,因此此集合仅对此事件不被视为“本地”变量