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

private的问题
概念搞不清楚了,我做了个例子,
第一个疑问:
点击Button3_Click时,aa显示为空,可是将if (!IsPostBack)去掉,却可显示"第0次",为何?
第二个疑问:
当点击Button1或者Button2后,然后再点击Button3时,aa值仍为Page_Load里面设置的值,是不是aa值不可改变啊?

public partial class member_Default : System.Web.UI.Page
{
  private string aa;
  protected void Page_Load(object sender, EventArgs e)
  {
  if (!IsPostBack)
  {
  aa = "第0次";
  }
  }
  protected void Button1_Click(object sender, EventArgs e)
  {
  aa = "第一次";
  }
  protected void Button2_Click(object sender, EventArgs e)
  {
  aa = "第二次";
  }
  protected void Button3_Click(object sender, EventArgs e)
  {
  Response.Write(aa);
  }
}

------解决方案--------------------
第一次加载页面时运行 !IsPostBack
点击按钮后 就不运行了,从新走一边程序,aa没有被赋值就是null。
如果去掉 if(!IsPostBack) 点击按钮,自然运行 aa = "第0次"; 

------解决方案--------------------
IsPostBack 是否回传
第一次加载不是回传,运行,点击按钮后是回传,则不运行。
根Private没关系,因为这些事件和 aa都是一个类。
------解决方案--------------------
每次你点击按钮的时候,都要触发Page_Load事件,如果你没加 if (!IsPostBack) ,当然 aa = "第0次";必做,你再
protected void Button3_Click(object sender, EventArgs e) 

Response.Write(aa); 


输出的当然是 第0次

------解决方案--------------------
楼主想要做到这个效果,可以这样:
private static string aa;