看看这段代码。
Label lb=new Label();
string prev="val";
protected void Button3_Click(object sender, EventArgs e)
{
prev = "temp";
lbl.ID =prev;
lbl.Text =prev;
Panel1.Controls.Add(lbl);
}
我在 button3 事件开始时有突破点。每次触发按钮事件时,我都会看到prev中的值再次变为'val'。是不是必须'temp'?
答案 0 :(得分:3)
因为在ASP.NET
服务器端,在每次调用时都会创建页面类的新对象。如果您想保持通话之间的价值,您可以根据需要进行其中一项
static
:我不推荐这种方法,因为当应用程序重新启动时,最后一个值将会丢失,但在其他2个选项中,有一些解决方案可以保持值超过应用程序重新启动。Session
存储它:如果每个用户需要不同的值,请使用此选项Application
存储它:如果所有用户都需要一个值,请使用此注意:由于并发问题,不要忘记在变更时锁定变量。
答案 1 :(得分:2)
每次页面Post回发Button Click事件时,您的变量将在asp.net中再次初始化。 为避免这种情况,您可以在其中一种状态管理技术中保存变量的值。 例如:会话
Session["prev"]="val";
在按钮单击中,您可以使用
设置此值Session["prev"]="temp";
调用此值可以使用
string variable=Convert.ToString(Session["prev"]);
希望这会有所帮助。
答案 2 :(得分:1)