- ·上一篇文章:用MSN不会外语也能和老外轻松聊天
- ·下一篇文章:变身聊天达人 MSN文字随意个性换
.net2.0中页的生存周期和动态控件
弄懂Page的生存周期(lifecycle)对于开发asp.net应用程序来说是非常重要的。很多.net初学者在处理动态加载控件的时候都出现过回发后丢值,丢状态之类的问题。HTTP协议是无状态的,这就是web程序不同与windows程序的一个天生的问题,如果要学习asp.net的话,Page的生存周期将是你最重要的基础之一。事件的顺序是怎样的,特别是asp.net 2.0新增了母板页后,使其变得更复杂了,本文的目的就是通过解释每一个事件的顺序及其用途让你弄清楚这些事件到底是怎么回事。
背景
在asp.net应用程序中,用户总是要去请求一个.aspx页的,让我们感兴趣的一件事就是在用户访问一个.aspx页的时候,应用程序所属的web服务器到底做了哪些事呢?弄懂事件的顺序将有助于我们在恰当的事件中做我们想做的事,也可以消除我们的一些混淆,比如把一些问题归咎给web程序的无状态之类的。
基础:新的编译模型和部分类(Partial Classes)
asp.net中的每一个web form都直接或间接的继承自System.Web.UI.Page类。一个web from包括两部分:一个是代码文件(WebForm.aspx.cs),它包括一些和page相关联的事件和方法,另一个是aspx文件,它包括一些HTML控件声明(在Visual Studio 2005的web应用程序中,我们还有一个名为WebForm.aspx.designer.cs的设计类)
在asp.net 2.0中,我们不需要再定义控件变量,也不需要再在代码文件中写一些事件委托,这一切都要归功于部分类。在asp.net 1.x中,这些代码都会自动的在InitializeComponent()里生成。但是到了2.0版本,runtime将会创建一个部分类,这个类会包含aspx页中的所有信息。这将使得代码文件非常清晰并且易于管理。
这将消除VS2003中的代码文件和aspx页面之间的名字相互联系的改变(如果我们要改变任意控件的ID,都不得不改变aspx页和代码文件)。在VS2005中所有控件的事件都定义在aspx页里。所以代码文件中的事件委托和控件变量将被清除,这是比先前的VS2003方便的地方。
背景
在asp.net应用程序中,用户总是要去请求一个.aspx页的,让我们感兴趣的一件事就是在用户访问一个.aspx页的时候,应用程序所属的web服务器到底做了哪些事呢?弄懂事件的顺序将有助于我们在恰当的事件中做我们想做的事,也可以消除我们的一些混淆,比如把一些问题归咎给web程序的无状态之类的。
基础:新的编译模型和部分类(Partial Classes)
asp.net中的每一个web form都直接或间接的继承自System.Web.UI.Page类。一个web from包括两部分:一个是代码文件(WebForm.aspx.cs),它包括一些和page相关联的事件和方法,另一个是aspx文件,它包括一些HTML控件声明(在Visual Studio 2005的web应用程序中,我们还有一个名为WebForm.aspx.designer.cs的设计类)
在asp.net 2.0中,我们不需要再定义控件变量,也不需要再在代码文件中写一些事件委托,这一切都要归功于部分类。在asp.net 1.x中,这些代码都会自动的在InitializeComponent()里生成。但是到了2.0版本,runtime将会创建一个部分类,这个类会包含aspx页中的所有信息。这将使得代码文件非常清晰并且易于管理。
这将消除VS2003中的代码文件和aspx页面之间的名字相互联系的改变(如果我们要改变任意控件的ID,都不得不改变aspx页和代码文件)。在VS2005中所有控件的事件都定义在aspx页里。所以代码文件中的事件委托和控件变量将被清除,这是比先前的VS2003方便的地方。


