[英]Increment number every time button is click
每当我单击按钮时,我都想增加一个int
变量i
。 但我得到的只是int
值1
并且不再增加。
这是我的代码:
private int i;
protected void btnStart_Click(object sender, EventArgs e)
{
i++;
lblStart.Text = i.ToString();
}
通过每个请求(单击按钮),将创建一个新实例。 所以你的非静态变量将被重置为0
。
您可以将i
定义为静态:
private static int i;
protected void btnStart_Click(object sender, EventArgs e)
{
i++;
lblStart.Text = i.ToString();
}
但请注意i
变量在所有用户之间共享。 要改善此问题,您可以使用Session
。
Session
是在会话中存储每个用户的数据的能力。
因此,您可以使用以下属性来更改每个会话中的i
变量:
private int i
{
get
{
if (Session["i"] == null)
return 0;
return (int)Session["i"];
// Instead of 3 lines in the above, you can use this one too as a short form.
// return (int?) Session["i"] ?? 0;
}
set
{
Session["i"] = value;
}
}
protected void btnStart_Click(object sender, EventArgs e)
{
i++;
lblStart.Text = i.ToString();
}
如您所知,其他答案是正确的,我想添加另一个答案
您必须在webform中将变量保存在ViewState
像这样定义你的变量
public int i
{
get { Convert.ToInt32( ViewState["i"] ); }
set { ViewState["i"] = value ; }
}
每次将 lblStart.Text 值转换为 int 并将其分配给 i。 然后增加 i。
private int i;
protected void btnStart_Click(object sender, EventArgs e)
{
i = Int32.Parse(lblStart.Text);
i++;
lblStart.Text = i.ToString();
}
我和你有类似的问题,我认为问题是因为事件点击没有存储之前增加的值,因此下次点击时它无法增加,所以这是我的代码:
protected void btn_add_Click(object sender, EventArgs e)
{
string initial;
int increment;
int quantity;
initial = TextBoxQty.Text;
increment = Convert.ToInt16(initial);
increment++;
TextBoxQty.Text = increment.ToString();
quantity = increment;
}
您可以使用隐藏字段,将它们初始化为 0。
private int i;
protected void btnStart_Click(object sender, EventArgs e)
{
i = int.Parse(myHiddenField.Value);
i++;
myHiddenField.Value = i;
lblStart.Text = i.ToString();
}
protected static int a = 0;
protected void btnStart_Click(object sender, EventArgs e)
{
a = a+1;
lblStart.Text = i.ToString();
}
它对我有用,但在 page_load() 上它再次从 1 开始值!
这实际上是我第一次这样做
int i = 0;
while (i>=0)
{
Console.WriteLine(i);
Console.ReadLine();
i++;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.