page_load 与page_init 的区别
来源:互联网 发布:红异端改淘宝 编辑:程序博客网 时间:2024/05/29 14:24
默认新建一个页面,就会有一个Page_Load事件的默认代码,而Page_Init却是另一个对页面作用非常重要的事件。
下面分别说明:
Page_Init:是在页面未加载之前,也就是在页面初始化之前,在Page_Load之前调用的,可以在控件加载之前做一些客户端检测呀这些操作等。但这个事件对于当前用户来说,只会进行一次,也就是第一次访问这个页面的时候,其运行一次。
Page_Load:在Page_Init之后运行(废话),用于加载控制以及页面的其它内容。客户端每刷新或是提交一次,Page_Load事件就重新绘制页面,将当前页面当新页面来处理。
区别说清楚了,再来说一下这点区别的利用。
我想到的是,可以利用这一点来做页面点击或是访问次数的更加精确一点的计数。
比如说,在Page_Init里运行计数的代码,这样这个页面被同一个用户不停的刷或是操作的时候,其点击始终是1次,这样计数就比较科学一些。当然,不能防止去了别的页面再回来的情况了。
还有比如我以前网站的访问统计,记录IP访问以及网站总的页面访问次数,都可以利用。
一个ASP.NET页面在运行时将经历一个生命周期,在生命周期中将执行一系列处理步骤。这些步骤包括初始化、实例化控件、还原和维护状态、运行事件处理程序代码以及呈现页面。在页生命周期的每个阶段中将引发一些事件,事件被引发时会运行程序员提供的事件处理代码。页面还支持自动事件连接,即ASP.NET将寻找具有特定名称的方法,并在引发特定事件时自动运行这些方法。如果@Page指令的AutoEventWireup属性设置为 true(若未定义该属性则默认为 true),页面事件将自动绑定至使用“Page_event”命名约定的方法,如 Page_Load 和 Page_Init。下表列出了主要的页面生命周期事件。
页 事 件
典 型 用 场
Page_PreInit
使用IsPostBack属性确定是否是第一次处理该页;创建动态控件;动态设置Theme属性;读取或设置配置文件属性值等
Page_Init
读取或初始化控件属性
Page_Preload
事件在所有回发数据处理之后但在 Load 事件之前引发
Page_Load
读取和更新控件属性
Control events
处理特定事件,如 Button 控件的 Click 事件
Page_PreRender
对页的内容进行最后更改
Page_Unload
执行最后的清理工作,例如关闭打开的文件和数据库连接等
以下代码可以用于验证这些事件的触发顺序:
代码清单 6 1
protected void Page_Load(object sender, EventArgs e){lbText.Text += "Page_Load <hr> ";}
protected void Page_PreInit(object sender, EventArgs e){lbText.Text += "Page_PreInit <hr>";}
protected void Page_Init(object sender, EventArgs e){lbText.Text += "Page_Init <hr>";}
protected void Page_PreLoad(object sender, EventArgs e){lbText.Text += "Page_PreLoad <hr>";}
protected void Page_PreRender(object sender, EventArgs e){lbText.Text += "Page_PreRender <hr>";}
lbText是在页面顶端放置的一个Lable控件。运行后在浏览器中呈现如图6-1所示的效果。
需要特别说明的是Page_Unload事件,它容易被误解为关闭页面时所触发的事件。但是执行下面的代码后就会发现其实不然。
代码清单 6 2
protected void Page_Unload(object sender, EventArgs e){System.Web.HttpContext.Current.Response.Write("<Script>alert('Page_Unload');</Script>");}
保存并运行页面后就会发现,在页面加载后就看到了图6-2的效果。
498)this.style.width=498;" border=0> 图 6-1 498)this.style.width=498;" border=0> 图 6-2页面在请求完成后,就立刻触发了该事件。关闭页面是一个客户端的事件,请不要与之混淆。此外,如果在Page_Unload中调用Response.Write方法,还会得到一个“响应在此上下文中不可用。”的错误警告。
了解了页面事件的触发顺序,在实际网站的开发中,我们就可以根据需要在不同的事件发生时给出处理操作。
不解:page_Load中使用了Page.IsPostBack后与page_init使用Page.IsPostBack有什么区别???
转自:http://blog.sina.com.cn/s/blog_5fb39f390100de3f.html
- page_load 与page_init 的区别
- page_load 与page_init 的区别
- page_load 与page_init 的区别
- page_load 与page_init 的区别
- page_Load和page_Init的区别
- page_Load和page_Init的区别
- Page_Init和Page_Load的区别
- page_init与page_load有什么区别
- Page_Init和Page_Load事件的区别
- Page_Init()和page_load()区别
- OnInit与Page_Init区别
- Page_Load、Page_Init、$(document).ready,这三个的执行顺序
- Page_Load、Page_Init、$(document).ready,这三个的执行顺序
- Page_Load Page_Init方法使用原理
- OnLoad和Page_Load的区别
- asp.net 2.0生命周期 以及Page_Load Page_Init方法使用原理
- asp.net 2.0生命周期 以及Page_Load Page_Init方法使用原理
- Page_Load Page_Init方法使用原理 Page 添加 事件
- 好铁不打钉,好程序员不去外包公司(转载)
- parent.window ,window.parent ,window.opener,opener.window的区别与用法
- C技巧:结构体参数转成不定参数
- 动态申请二维数组并释放
- eclipse中svn版本过低导致无法更新解决方案
- page_load 与page_init 的区别
- 电子商务与媒体融合之探析
- 修改oracle字符集
- 中文分词
- jquery 设置 取得 标签的 href
- 关于循环跳出 给自己看的
- 我的Android开发相关文章
- Mysql远程测试连接工具
- ubuntu 美化工具 awn