添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

ASP.NET中web应用程序中的aspx.cs文件中,存在一个 protected void Page_Load(object sender, EventArgs e) 这样的函数,这个函数顾名思义,便知道是页面加载函数。当每一次处理页面时,都要重新访问这一个函数。

那大家可能会问,为什么要有这样的一个页面加载函数,在实际编程中,有许多代码是每一次页面刷新时,都要重新加载。故此也就用到了这个函数。

经过测试Page_Load事件执行的情况分为两种:

第一种:页面第一次加载时执行。

第二种:前台页面事件触发后 ,后台的Page_Load会再一次执行。

那么具体的那些代码要写到这里呢?根据自己的理解,我有以下答案:

①:对控件的的数据绑定

②:第一次加载时必须执行的代码

2、Demo

 <span style="font-family:'Comic Sans MS';">public partial class test1 : System.Web.UI.Page  
         protected void Page_Load(object sender, EventArgs e)  
             //利用color对象修改控件的颜色,定义按钮字体属性  
             //TextBox1.BackColor = System.Drawing.Color.Red;  
             //Button1.Font.Name = "Verdana";  
             //Button1.Font.Size = FontUnit.Point(120);//设置实际大小  
             //Button1.Font.Size = FontUnit.Large;//设置相对大小  
             if (!Page.IsPostBack)  
                 TextBox1.BackColor = System.Drawing.Color.Red;  
             if (Page.IsPostBack)  
                 TextBox1.BackColor = System.Drawing.Color.Blue;  
         }</span>  

可以看到,已经注释掉的代码,是对控件的基本数据绑定,那么这些代码必须在每一次的加载中执行。

if后面的代码解释:

这就用到了Page.IsPostBack。

  • 当通过IE的地址栏等方式打开一个URL时是第一次打开, 当通过页面的提交按钮或能引起提交的按钮以POST的方式提交的服务器时,页面就不再是第一次打开了。(每点击一次按钮,都是一次加载)
  • IsPostBack只有在第一次打开的时候是false,其它时候都是true
  • 那么只需加载一次的代码便可以放入以下代码中。

    if(!Page.IsPostBack){};

    而多次打开时都需要加载的代码就可以放入以下代码中。

    if(Page.IsPostBack){};

    根据以上代码。便可以看出,第一次加载时,TextBox1的背景颜色被填充为红色。

    而多次加载时,TextBox1的背景颜色改为蓝色。

    3、遇见问题

    今天在做Datalist 中遍历复选框选中状态时,后台的代码获取checkbox的选中状态始终是false,研究了好久才发现跟Page_Load()事件有关。

    经过测试Page_Load事件执行的情况分为两种:

    第一种:页面第一次加载时执行。

    第二种:前台页面事件触发后 ,后台的Page_Load会在一次执行。

    protected void Page_Load(object sender, EventArgs e) 
                  dataList_win(page);//数据绑定函数 
    

    当页面第一次加载时Page_Load事件内部执行DataList数据绑定的函数,在页面点击按钮触发事件时在后台的代码会再一次执行Page_Load事件(数据绑定函数再一次执行),这样的话就算前台的复选框全都选中,进入后台时就会重新进行数据绑定,这样都就对前台的复选框选中状态重置,所以要在Page_Load()事件中对数据绑定的函数加上判断。

    protected void Page_Load(object sender, EventArgs e)
     if (!Page.IsPostBack)//是否是页面第一次加载
            wj_win(page);//第一次加载执行
    

    PS:后台进行数据绑定的函数在被调用的时候页面才会显示数据,所以在Page_Load事件内添加该函数,这样就会在页面加载时显示数据。

    无论何种情况都会执行Page_Load,这时就有必要判断一下服务器处理Page_Load事件时是在何种情况发生;

    而Page.IsPostBack正好解决了这个问题;

    当是第一种情况的时候(为了响应客户的请求)Page.IsPostBack返回false;

    当是第二种情况的时候(把该页面回发到服务器给服务器处理时)Page.IsPostBack返回True;

    !Page.IsPostBack 就是为了 防止服务端的加载重复绑定数据!

  • 私信