ASP.NET提供了多种控件,用于生成HTML元素的HTML控件,具有多种嵌入特征的服务器控件,混合了测试逻辑的验证控件。你可能会遇到开发基于Web的自定义控件情形。
服务器控件
ASP.NET提供了四种创建通用控件的方式:
1、user control
假如你要将在一个应用程序中的一个ASP.NET页面应用于另一个应用程序相同的环境中,那么你也将你的页面作为一个用户控件保存。
2、composite control
你能够创建一个混合了多个控件特征的合成控件。
3、Inheritance
你能够应用继承的原则,将已有的控件进行丰富。可以对已有的控件进行重写增强它的功能。
4、custom control
如果对上面的几种方法不满意,你可以从一个基类的控件衍生创建一个自定义控件。
![]()
控件的创建
1、根据要创建的控件决定使用的基类
2、如果控件有用户界面,则重写Render方法并且实现用户界面
3、设计控件的特征并设计属性,方法与事件
4、设计客户端的功能
5、加入设计时支持
基类
如果创建的控件不需要用户接口,则只要从System.Web.UI.Control作继承,如果控件需要界面呈现,则要确定它继承自System.Web.UI.WebControls。
初始化控件
一个控件生存周期的第一步为Init事件的触发。这是一个对控件执行任何初始化操作的时候。比如,你能够对局部变量进行初始化。在这个事件期间确保你的控件没有访问其他的服务器控件。一旦该控件加载到Page对象,则触发onLoad事件。在这个事件处理中,你的控件将执行所有请求共同地动作,例如,组装一个数据集。在输出被Render之前如果有动作要执行,则会触发PreRender事件。
数据状态保存
对于每一个客户端的请求,Page对象以及其中的控件被实例化。然而,你可能想通过HTTP请求保存属性的值。页面框架在呈递页面之前使用ViewState来自动的保存页面与控件的值。ViewState的类型是System.Web.UI.StateBag,它是一个存储名称/值对的字典。如果一个控件用ViewState代替私有域来保存状态,则属性将会自动的持续到客户端。你没有必要使用局部变量。如果想定制ViewState中的存储,需要重写SaveViewState 方法。
呈现控件
对于UI的控件,Render方法是提供界面特征的地方。你在这里所作的决定了你的控件最后的直观的表现形式。控件中的HtmlTextWriter对象通过HTTP将文本输出到浏览器。在Render时使用的主要方法是Write 和WriteLine。你需要利用这些方法发送标记内容到输出流中。如果你的控件源自WebControl类,你能够利用AddAttributesToRender方法来指定其他的HTML属性以及CSS。
Disposed
当控件从内存中释放时,Disposed 事件被调用。在这里你可以释放控件所占用的任何资源(数据库连接)
服务器控件
ASP.NET提供了四种创建通用控件的方式:
1、user control
假如你要将在一个应用程序中的一个ASP.NET页面应用于另一个应用程序相同的环境中,那么你也将你的页面作为一个用户控件保存。
2、composite control
你能够创建一个混合了多个控件特征的合成控件。
3、Inheritance
你能够应用继承的原则,将已有的控件进行丰富。可以对已有的控件进行重写增强它的功能。
4、custom control
如果对上面的几种方法不满意,你可以从一个基类的控件衍生创建一个自定义控件。
控件的创建
1、根据要创建的控件决定使用的基类
2、如果控件有用户界面,则重写Render方法并且实现用户界面
3、设计控件的特征并设计属性,方法与事件
4、设计客户端的功能
5、加入设计时支持
基类
如果创建的控件不需要用户接口,则只要从System.Web.UI.Control作继承,如果控件需要界面呈现,则要确定它继承自System.Web.UI.WebControls。
初始化控件
一个控件生存周期的第一步为Init事件的触发。这是一个对控件执行任何初始化操作的时候。比如,你能够对局部变量进行初始化。在这个事件期间确保你的控件没有访问其他的服务器控件。一旦该控件加载到Page对象,则触发onLoad事件。在这个事件处理中,你的控件将执行所有请求共同地动作,例如,组装一个数据集。在输出被Render之前如果有动作要执行,则会触发PreRender事件。
数据状态保存
对于每一个客户端的请求,Page对象以及其中的控件被实例化。然而,你可能想通过HTTP请求保存属性的值。页面框架在呈递页面之前使用ViewState来自动的保存页面与控件的值。ViewState的类型是System.Web.UI.StateBag,它是一个存储名称/值对的字典。如果一个控件用ViewState代替私有域来保存状态,则属性将会自动的持续到客户端。你没有必要使用局部变量。如果想定制ViewState中的存储,需要重写SaveViewState 方法。
呈现控件
对于UI的控件,Render方法是提供界面特征的地方。你在这里所作的决定了你的控件最后的直观的表现形式。控件中的HtmlTextWriter对象通过HTTP将文本输出到浏览器。在Render时使用的主要方法是Write 和WriteLine。你需要利用这些方法发送标记内容到输出流中。如果你的控件源自WebControl类,你能够利用AddAttributesToRender方法来指定其他的HTML属性以及CSS。
Disposed
当控件从内存中释放时,Disposed 事件被调用。在这里你可以释放控件所占用的任何资源(数据库连接)
浙公网安备 33010602011771号