每当我反复点击Button1时,Literal1中的文本不会递增。你能告诉我原因吗?
预期:每次单击按钮后,文本字段中的值都会显示。
当前结果:值始终显示为1。
public partial class d1 : System.Web.UI.Page
{
int c;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
c = 1;
Literal1.Text = c.ToString();
}
}
protected void Button1_Click(object sender, EventArgs e)
{
c=c+1;
Literal1.Text = c.ToString();
}
}
答案 0 :(得分:1)
原因是c
是该类的实例变量。每次回发到服务器都会创建一个新的类实例。因此,c
在每个帖子后面被初始化为0
。如果您希望c
在该类的单个实例之外保留,则需要将其存储在某个位置。会话,应用程序,数据库等(具体取决于在什么情况下c
的值应该保持不变。我猜测这只是测试代码以了解功能,所以你可能会尝试以上所有内容,看看它们有何不同。)
对于 lot 有关此问题的更多信息,您需要阅读ASP.NET Page Life Cycle。
基本上,"全球"没有将c
非常准确地描述为变量。它的范围仅限于该类,更具体地说,仅限于该类的任何一个实例。