请教一下各位,我的目的很简单,在类里有一个成员变量,然后用成员函数改变变量的值
源代码如下using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;namespace QueryDepart
{
/// <summary>
/// WebForm2 的摘要说明。
/// </summary>
public class WebForm2 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Button Button1;
protected System.Web.UI.WebControls.Button Button2; string i="no change";

private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面 } #region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{    
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Button2.Click += new System.EventHandler(this.Button2_Click);
this.Load += new System.EventHandler(this.Page_Load); }
#endregion
private void Button1_Click(object sender, System.EventArgs e)
{
i="changed";
Response.Write(i);
} private void Button2_Click(object sender, System.EventArgs e)
{
Response.Write(i);

}
}
}我的想法是,点了button1以后, 不管点button1或者button2都可以显示“changed”,但是结果就是,点了button1 显示“changed”,点button2还是显示“no change”,难道成员函数不能改变成员变量的值么?没道理啊?还是ASP。net有什么特别的机制虽然可以用其他的方法代替,但我还是想知道原因,谢谢啊

解决方案 »

  1.   

    补充一点
    在Application里就没问题,在ASP.Net里面就这样~~
      

  2.   

    回传表单后又生成了一个Page类的实例吧......
      

  3.   

    回传表单后又生成了一个Page类的实例的话,是不是表单上的控件的状态也要还原啊?但是我即使取消了控件的viewstate,提交后的表单上的控件也没有还原啊~~
      

  4.   

    不知道怎么解释,好像。NET这个机制是这样,做不到
      

  5.   

    每回传一次,类中的变量都会被重新被始化。
    当你单击BUTTON1时,变量 i 首先被始化为 “no change”,然后在执行 Button1_Click 函数,在这个函数中把 i 改成 "changed", 时显示正确的结果。
    当你单击BUTTON2时,变量 i 又重新被始为 "no change", 然后在执行 Button2_Click 函数,但在这个函数中变没有改变变量,所以显示的还是 "no change".
      

  6.   

    哦,谢谢哈,请问有没有微软的文档关于这方面的介绍
    非常感谢exboy
      

  7.   

    这样声明变量string static i="no change";不知道语法有没有句,是VB的protected shared i as string="no change"这样就可以实现你的效果