C#将项目添加到列表中<&燃气轮机;不';不要增加它的尺寸
我在ASP.NET中玩了一点,这里有一些显示列表大小的代码和一些操作它的按钮 我已经分离了类来创建带有构造函数的列表。这里还有一个增加其大小的方法C#将项目添加到列表中<&燃气轮机;不';不要增加它的尺寸,c#,asp.net,list,C#,Asp.net,List,我在ASP.NET中玩了一点,这里有一些显示列表大小的代码和一些操作它的按钮 我已经分离了类来创建带有构造函数的列表。这里还有一个增加其大小的方法 using System; using System.Collections.Generic; using System.Linq; using System.Web; public class Class1 { public List<byte> Pole { get; set; } public int velik
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
public class Class1
{
public List<byte> Pole { get; set; }
public int velikost_pole { get; set; } //list size
public Class1() //constructor, default size is 3
{
List<byte> pole = new List<byte>();
for (byte a = 0; a < 3; a++)
{
pole.Add((byte)(a * a));
}
Pole = pole;
velikost_pole = Pole.Count;
}
public string zvetsit_pole() //method to increase the list size by adding item
{
if (Pole.Count < 6) //max size
{
Pole.Add((byte)(Pole.Count*Pole.Count+1));
velikost_pole = Pole.Count;
return "Pole zvetseno o 1";
}
else
{
return "Jiz nelze zvetsit";
}
}
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用System.Web;
公共班级1
{
公共列表极{get;set;}
public int velikost_pole{get;set;}//列表大小
public Class1()//构造函数,默认大小为3
{
列表极点=新列表();
用于(字节a=0;a<3;a++)
{
极点加((字节)(a*a));
}
极点=极点;
velikost_极点=极点计数;
}
公共字符串zvetsit_pole()//通过添加项来增加列表大小的方法
{
if(极数<6)//最大尺寸
{
Pole.Add((字节)(Pole.Count*Pole.Count+1));
velikost_极点=极点计数;
返回“极zvetseno o 1”;
}
其他的
{
返回“Jiz nelze zvetsit”;
}
}
}
在主文件中,对象被创建为全局变量,并且有一个按钮用于增加列表大小。然而,大小没有改变,仍然是一样的
public partial class _Default : System.Web.UI.Page
{
Class1 objekt = new Class1(); //create the object
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
Label1.Text = "Velikost pole je: " + objekt.velikost_pole.ToString() + "<br />";
for (int a=0;a<objekt.velikost_pole;a++)
{
Label1.Text += objekt.Pole[a].ToString() + " ";
}
}
protected void Button2_Click(object sender, EventArgs e) //call method to increase the size
{
Label1.Text = objekt.zvetsit_pole();
}
public分部类\u默认值:System.Web.UI.Page
{
Class1 objekt=new Class1();//创建对象
受保护的无效页面加载(对象发送方、事件参数e)
{
}
受保护的无效按钮1\u单击(对象发送者,事件参数e)
{
Label1.Text=“Velikost-pole-je:”+objekt.velikostu-pole.ToString()+“
”;
对于(int a=0;a请记住ASP.NET是无状态的,因此每个请求都会创建一个全新的Page
对象。因此,您的活动时间线如下所示:
- 请求页
页面
已创建
objekt
已创建
- 页面呈现
- 按钮1点击
页面
已创建
objekt
已创建(与第一个请求的对象不同)
Label1.Text
set
- 页面呈现
- 按钮2点击
页面
已创建
objekt
已创建(与前两个请求中的任何一个都不相同)
zvetsit\u极
调用
Label1.Text
设置为返回值
- 页面呈现
因此,按钮单击事件处理不同的对象,因此在下一个操作中看不到一个操作的结果
答案是将objekt
放入某种持久性存储中,如ViewState
、Cache
、或Session
。如果您不知道哪一个适合您的需要,请自己做一些研究和决定。每个请求都会创建\u Default
类的一个新实例,并相应地,objekt
也将是Class1
的新实例
这意味着您在一个请求中对objekt
所做的任何更改都不会反映在下一个请求中
为了使更改在请求之间持久化,您需要将其存储在某个位置。有不同的选项可以执行此操作,一些选项涉及使用用户的会话,另一些选项涉及使用页面的视图状态,或者可能将状态持久化到磁盘。选择哪一个取决于您希望完成的具体操作
有关其他信息,请参见以下页面:
你的Button2\u Click方法真的被调用了吗?当然,你必须将它添加到按钮的Click事件中,尽管这可能由设计者或自己编写代码来完成。对于每个请求,都会创建一个代码隐藏文件的新实例,因此如果Class1
也会创建新实例。那么,好吧,谢谢