一个Button调用一个类的实体对象,类方法为+=1 并显示
问题描述 一个Button调用一个类的实体对象device,类方法为+=1 并显示 类的方法add 为filename+=1 (filename 定义为int) 反复按buton1 结果貌似只执行一次啊,是不是我的loadpage 写错了 还是 类初始化的地方不对呢 请大家帮忙啊,我要的结果是 按十次按钮, 能够调用device.add十次,我试过了 按一次按钮,时间内安排一个for(i=0;i<10;i++)就可以的,大家帮挑错啊
public partial class _Default : System.Web.UI.Page
{
public static device_list[] device = new device_list[300];
public static int filename;
public mydevicelist.mydevicelist mydevice = new mydevicelist.mydevicelist();
protected void Page_Load(object sender, EventArgs e)
{
if(!Page.IsPostBack)
{
filename = 0;
mydevice.filename = 1;
}
}
protected void Button1_Click(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
mydevice.add();
Response.Write(mydevice.filename.ToString());
}
}
------解决方案-------------------- if (!Page.IsPostBack)
{
mydevice.add();
Response.Write(mydevice.filename.ToString());
这行代码说明你只是在初次请求页面的时候执行了add方法 把判断拿掉 需要执行一次的只有初始化mydevice.filename 字段
------解决方案-------------------- 断点调试一下就知道了
------解决方案-------------------- button中加上if (!Page.IsPostBack),那么只在第一次加载页面时执行一次,下次就跳过了,去掉这个判断
------解决方案-------------------- C# code
protected void Button1_Click(object sender, EventArgs e)
{
mydevice.add();
Response.Write(mydevice.filename.ToString());
}
------解决方案--------------------
是因为每次点击按钮都会引起页面刷新, mydevice 会被重新创建,里面的值会被重新初始化,做成static的,就行filename一样 或者用单例模式,让 mydevice new的时候返回单例模式
------解决方案--------------------
加上红字部分 public static mydevicelist.mydevicelist mydevice = new mydevicelist.mydevicelist();
------解决方案--------------------
放到类中那就是实例变量 每次访问其实都重新初始化了 探讨 如果我不调用类 只是利用全局变量 filename 在load 及button事件中 filename++ 就可以一直能看到变量在增加,放到类中就不行