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

一个简单问题,送分吧
C# code

  protected void Page_Load(object sender, EventArgs e)
    {
              Response.Write("测试Page_load事件");
    }
 protected void Button1_Click(object sender, EventArgs e)
    {
        this.Button1.Text = "hello,world";
    }


为什么我点击button控件的时候 Page_load事件只是执行了一次啊。即始终只显示一条“测试Page_load事件”,Page_load不是应该每次都执行的吗

------解决方案--------------------
初始化之后,load让内容显示出来。当button提交后,页面再次初始化,load当然只有一条了。所以.net page 才会使用保存状态的隐藏域来保存服务器控件的状态。
------解决方案--------------------
Page_Load是页面加载事件,当你点击Button时页面执行了Page_Load事件,但是Page_Load事件是页面加载事件,页面加载的时候就把以前的信息给删除了,所以始终是一个 测试Page_load事件
------解决方案--------------------
点Button后后使页面重新Load,触发Page_Load事件,所以你怎么点也只有测试Page_load事件。
要想显示hello,world,把你的Page_Load事件改一下:

C# code

  protected void Page_Load(object sender, EventArgs e)
    {
         if (!IsPostBack)
              Response.Write("测试Page_load事件");
    }

------解决方案--------------------
你点击button后就向服务器重新发请求,服务器返回数据,重新渲染页面,刚才的 "测试Page_load事件"被抹去了
------解决方案--------------------
应该在load时间里面加上IsPostBack,不加的话页面会回传所以会出现这种现象。 
 protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
}
------解决方案--------------------
你点击button后就向服务器重新发请求,服务器返回数据,重新渲染页面
------解决方案--------------------
protected void Page_Load(object sender, EventArgs e)
{
Response.Write("测试Page_load事件");
}

每次点击按钮都是服务器请求,你写的代码缺少了if (!IsPostBack) 即没有排除掉是否是第一次请求,所以每次清楚都会执行下 Response.Write("测试Page_load事件"); 输出... 所以你每次点击看到的都是 “测试Page_load事件” 

第一次加载事件 不加 if (!IsPostBack) 这是什么需求??你先测试什么结果?
------解决方案--------------------
if (!IsPostBack)
 
------解决方案--------------------
Page_Load 只有首次加载的时候会执行 你想多执行几次就要使用IsPostBack()
例如:
if(!IsPostBack())
{
MessageBox.Show("这个是首次加载");
}
else
{
MessageBox.Show("这个不是首次加载时执行的");
}
------解决方案--------------------
if (!IsPostBack)

------解决方案--------------------
不是Page_load只执行一次,其实它每次都执行了,只不过每次页面重新加载的时候页面重新渲染了。如果你加上 if(!IsPostBack){ Response.write("测试Page_load事件"); }的话 下次点击button按钮的时候,页面是不会输出那些东西的,说明Page_load其实是执行了的!