疑惑的static变量 C#
看这段代码:
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
static string strhobby = "";
protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e)
{
foreach (ListItem item in ListBox1.Items)
{
if (item.Selected)
{
strhobby += item.Value+" ";
}
}
Label1.Text = strhobby;
}
}
这是一段服务器端代码。在客户端上,有一个下拉列表框,当点击下拉列表中的内容的时候,下面显示一个,在点一个,有在原来的基础上添加一个。由于现在是静态变量,可以做到,但是问题在于,这个静态变量strhobby不会被释放。当下次运行这个页面时,一旦你激发ListBox1时,上次的操作结果还会出现在下载的页面上。怎样释放这个变量呢?
------解决方案--------------------
那就去掉 static 啊,采用ViewState存储或者Cookie
------解决方案--------------------
ViewState其实就是页面中一个隐藏标签,所有web控件上的数据都是用ViewState进行自动存储的,你也可以调用ViewState存储自定义数据,而这些数据都会存放在客户端的最终输出页面内,以隐藏标签页的形式存在,最终也会增加来回传输的数据量