asp.net 页面生命周期,你知道吗??

Jelly_tracy 2009-11-25 03:30:13
asp.net 页面生命周期

在生命周期的各个阶段,都有其独特的含义和功能

麻烦给通俗的讲解一下,在每个阶段最适合做一些什么事情?

(经常看到文章说还原视图状态,请问什么是视图状态??)


请各位就声明周期的各个(应该是十个吧)阶段分别讲解下!!!


万分感谢..很需要!!!
...全文
2143 52 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
52 条回复
切换为时间正序
请发表友善的回复…
发表回复
hehaimin12 2010-08-12
  • 打赏
  • 举报
回复
好人一生平安。特别是上面的大大们
yihongqiushui 2010-05-22
  • 打赏
  • 举报
回复
这些都是微软提供的源资料,实际上,你们都深入了解了吗?
yufeng219 2010-03-19
  • 打赏
  • 举报
回复
fdsfdsfdsffffffffffffffff
cuike519 2009-11-27
  • 打赏
  • 举报
回复
大哥MSDN上面专门有一节就讲这个的,去看看吧。。。
wowuyule_yundao 2009-11-27
  • 打赏
  • 举报
回复
学习。。。。。
lfywy 2009-11-27
  • 打赏
  • 举报
回复
UP,JF
Jelly_tracy 2009-11-27
  • 打赏
  • 举报
回复
[Quote=引用 45 楼 watsonchia 的回复:]
Httpcontext上下文就是包括Request和Response信息。
写.ashx处理程序的时候就经常能看到这个。
[/Quote]


是的,里面还包括了在请求到结束里面的所有信息,比如server等,但是是怎么工作的呢 ?
watsonchia 2009-11-27
  • 打赏
  • 举报
回复
Httpcontext上下文就是包括Request和Response信息。
写.ashx处理程序的时候就经常能看到这个。
n109214114 2009-11-27
  • 打赏
  • 举报
回复
看看...............
Jelly_tracy 2009-11-27
  • 打赏
  • 举报
回复
谁能解释一下asp.net上下文 Httpcontext类,到底是干什么 用的,怎么使用,是如何工作的
龙宜坡 2009-11-27
  • 打赏
  • 举报
回复
[Quote=引用 25 楼 will_bi 的回复:]
C# codeusing System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;publicpartialclass _Default : Page
{protectedvoid Page_Load(object sender, EventArgs e)
{

}#region OnPreInit 第一步protectedoverridevoid OnPreInit(EventArgs e)
{//检查 IsPostBack 属性来确定是不是第一次处理该页。//创建或重新创建动态控件。//动态设置主控页。//动态设置 Theme 属性。//读取或设置配置文件属性值。//注意//如果请求是回发请求,则控件的值尚未从视图状态还原。如果在此阶段设置控件属性,则其值可能会在下一事件中被重写。base.OnPreInit(e);
}#endregion#region OnInit 第二步protectedoverridevoid OnInit(EventArgs e)
{//在所有控件都已初始化且已应用所有外观设置后引发。使用该事件来读取或初始化控件属性。base.OnInit(e);
}#endregion#region OnInitComplete 第三步protectedoverridevoid OnInitComplete(EventArgs e)
{//由 Page 对象引发。使用该事件来处理要求先完成所有初始化工作的任务。base.OnInitComplete(e);
}#endregion#region PreLoad 第四步protectedoverridevoid OnPreLoad(EventArgs e)
{//如果需要在 Load 事件之前对页或控件执行处理,请使用该事件。//在 Page 引发该事件后,它会为自身和所有控件加载视图状态,然后会处理 Request 实例包括的任何回发数据。base.OnPreLoad(e);
}#endregion#region OnLoad 第五步protectedoverridevoid OnLoad(EventArgs e)
{//Page 在 Page 上调用 OnLoad 事件方法,然后以递归方式对每个子控件执行相同操作,如此循环往复,直到加载完本页和所有控件为止。//使用 OnLoad 事件方法来设置控件中的属性并建立数据库连接。base.OnLoad(e);
}#endregion#region 控件事件 第六步protectedvoid Button1_Click(object sender, EventArgs e)
{//用这些事件来处理特定控件事件,如 Button 控件的 Click 事件或 TextBox 控件的 TextChanged 事件。//注意//在回发请求中,如果页包含验证程序控件,请在执行任何处理之前检查 Page 和各个验证控件的 IsValid 属性。

}#endregion#region OnLoadComplete 第七步protectedoverridevoid OnLoadComplete(EventArgs e)
{//对需要加载页上的所有其他控件的任务使用该事件。base.OnLoadComplete(e);
}#endregion#region OnPreRender 第八步protectedoverridevoid OnPreRender(EventArgs e)
{//在该事件发生前://Page 对象会针对每个控件和页调用 EnsureChildControls。//设置了 DataSourceID 属性的每个数据绑定控件会调用 DataBind 方法。有关更多信息,请参见下面的数据绑定控件的数据绑定事件。//页上的每个控件都会发生 PreRender 事件。使用该事件对页或其控件的内容进行最后更改。base.OnPreRender(e);
}#endregion#region SaveStateComplete 第九步protectedoverridevoid OnSaveStateComplete(EventArgs e)
{//在该事件发生前,已针对页和所有控件保存了 ViewState。将忽略此时对页或控件进行的任何更改。//使用该事件执行满足以下条件的任务:要求已经保存了视图状态,但未对控件进行任何更改。base.OnSaveStateComplete(e);
}#endregion#region Render 第十步//Render//这不是事件;在处理的这个阶段,Page 对象会在每个控件上调用此方法。所有 ASP.NET Web 服务器控件都有一个用于写出发送给浏览器的控件标记的 Render 方法。//如果创建自定义控件,通常要重写此方法以输出控件的标记。不过,如果自定义控件只合并标准的 ASP.NET Web 服务器控件,不合并自定义标记,则不需要重写 Render 方法。有关更多信息,请参见开发自定义 ASP.NET 服务器控件。//用户控件(.ascx 文件)自动合并呈现,因此不需要在代码中显式呈现该控件。#endregion#region OnUnload 第十一步protectedoverridevoid OnUnload(EventArgs e)
{//该事件首先针对每个控件发生,继而针对该页发生。在控件中,使用该事件对特定控件执行最后清理,如关闭控件特定数据库连接。//对于页自身,使用该事件来执行最后清理工作,如:关闭打开的文件和数据库连接,或完成日志记录或其他请求特定任务。//注意//在卸载阶段,页及其控件已被呈现,因此无法对响应流做进一步更改。如果尝试调用方法(如 Response.Write 方法),则该页将引发异常。base.OnUnload(e);
}#endregion
}
[/Quote]

详尽!
zhangxun829 2009-11-26
  • 打赏
  • 举报
回复
新手路过
Jelly_tracy 2009-11-26
  • 打赏
  • 举报
回复
[Quote=引用 33 楼 leonbingo 的回复:]
引用 31 楼 jelly_tracy 的回复:
引用 29 楼 leonbingo 的回复:
引用 25 楼 will_bi 的回复:
C# codeusing System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts?-


这哥们写的够详细的,呵呵.


可是放到vs里面执行不了呀 ?


应该是可以执行的
[/Quote]

我是vs 2003 无法执行
shangweidenglu 2009-11-26
  • 打赏
  • 举报
回复
mark
happy664618843 2009-11-26
  • 打赏
  • 举报
回复
页请求:发生在页面生命周期之前,用户请求页时,ASP.NET将确定是否需要分析和编译页,从而确定是否开始页面的生命周期,或者是否可以在不运行页的情况下发送页面缓存以进行响应。

2、 开始:设置页属性,如:HttpContext以及其他属性;在此阶段,页面需要确定是回发请求还是新请求,并设置IsPostBack属性;设置页面的UICulture属性。

3、 页面初始化:加载所有主题;控件生成,并设置UniqueID;
注:ViewState、ControlState中的值还未加载至控件;如果页面是回发,则回发数据也还未加载;故此时控件可以访问,但值可能出错。

4、 加载:如果当前请求是回发请求,则为控件加载ViewState和ControlState中的值。

5、 验证:调用所有验证程序控件的Validate方法,此方法将设置验证程序控件和页的IsValid属性。

6、 回发事件处理:如果请求是回发请求,则调用所有事件处理程序。

7、 呈现:首先对该页和所有控件进行保存视图状态,然后对每个控件调用Render方法,它会提供一个文本编写器,用于将控件的输入写入页的Response属性的OutputStream中。

8、 卸载:完成呈现,并已将页发送至客户端、准备丢弃该页后,调用卸载。将卸载属性如:Response和Request等等。
leonbingo 2009-11-26
  • 打赏
  • 举报
回复
[Quote=引用 31 楼 jelly_tracy 的回复:]
引用 29 楼 leonbingo 的回复:
引用 25 楼 will_bi 的回复:
C# codeusing System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts?-


这哥们写的够详细的,呵呵.



可是放到vs里面执行不了呀 ?
[/Quote]

应该是可以执行的
xupeihuagudulei 2009-11-26
  • 打赏
  • 举报
回复
其实gloabel.cs这个文件里面应该也有定义的,。
不过大概看了下楼上的答案差不多够楼主用的了
Jelly_tracy 2009-11-26
  • 打赏
  • 举报
回复
[Quote=引用 29 楼 leonbingo 的回复:]
引用 25 楼 will_bi 的回复:
C# codeusing System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts?-


这哥们写的够详细的,呵呵.
[/Quote]


可是放到vs里面执行不了呀 ?
mailbao 2009-11-26
  • 打赏
  • 举报
回复
路過學習..
leonbingo 2009-11-26
  • 打赏
  • 举报
回复
[Quote=引用 25 楼 will_bi 的回复:]
C# codeusing System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts?-
[/Quote]

这哥们写的够详细的,呵呵.
加载更多回复(31)

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧