日期:2014-05-18  浏览次数:20364 次

RadioButtonList不刷新static变量问题
有一个radiobutton,通过选择2个按钮,来设置一个static变量为不同的值,做AB不同的操作。
调试运行都正常,但是在发布了一段时间之后,出现了即使点选第二个,页面有刷新动作,static变量的值仍然为第一个,做的是A操作。
开始重启IIS之后就好了,后来重启IIS多次也不管用。
求高手指点,谢谢!!

页面
<asp:RadioButtonList ID="QueryStyle" AutoPostBack ="true" OnSelectedIndexChanged="QueryStyleChanged" RepeatLayout="flow" RepeatDirection="Horizontal" runat="server">
<asp:ListItem Selected="True" Text="************&nbsp;&nbsp;&nbsp;&nbsp;" />
<asp:ListItem Selected="False" Text="**********8&nbsp;&nbsp;&nbsp;&nbsp;" /> 
  </asp:RadioButtonList>


程序里
  static int style;
  protected void QueryStyleChanged(object sender, EventArgs e)
  {
  style = QueryStyle.SelectedIndex;
  if (style == 0)
  DO A
  else
  DO B
  }


------解决方案--------------------
因为static变量是全局,你的网站发布了之后,大家都是操作的同一个变量,说不定你选择的是A,但是别人就有可能选择的是B,而且选择B的这个人,他还来不及操作,另一个人又改成了A,所以就出现了你现的情况

这个可以用cookie或者session来实现

------解决方案--------------------
同意一楼的说法 静态变量在多人访问时确实容易出问题

个人认为用HiddenField代替static变量更简单些 仅供参考