控件的开发

控件可开发在于它的可复用性。

ASP.net可以建立以HTML或其他的标记语言显示的可复用可视化控件。

 

通过学习VC#.net程序设计经典,创建了两个控件。

一个是带属性的控件,一个是提供方法的控件。

 

(传统意义上)可供开发的控件实际上有两种:Custom Control User ControlCustom Control 是纵向的,是对系统本身控件的继承和扩充,在程序中以DLL文件形式存在,User Control 则是横向的,是对系统本身控件的组合,在系统中以.ascx为后缀名。这两种控件功能相同,都可以为开发人员提供可复用的可视化UI组件,相比之下前者具有更大的灵活性,同时开发起来比较复杂,而后者容易开发,但可重用性就比较差。一般来说用户会先用User Control来开发,只有当其不堪重用的时候才转而使用Custom Control
事实上,用户自己开发Custom Control并不是一件很困难的事,只需要定义一个直接或间接从Control 派生的类并重写它的 Render 方法即可,System.Web.UI.ControlSystem.Web.UI.WebControls.WebControl两个类是服务器控件的基类。 Control 类定义了所有服务器控件共有的属性、方法和事件。其中包括控制控件执行生命周期的方法和事件,以及 IDUniqueIDParentViewState Controls(子控件集合)等属性。Control 没有用户界面 (UI) 特定的任何功能。如果创作的控件没有提供 UI,或者组合了其他呈现其自己的 UI 的控件,则从 Control 派生。 WebControl 类是从 Control 派生的,并为 UI 功能提供附加的属性和方法。这些属性包括 ForeColorBackColorFontBorderStyleHeight WidthWebControl ASP.NET Web 服务器控件系列的基类。如果控件呈现 UI,则从 WebControl 派生。
可以重写从基类继承的属性、方法和事件,并可以将新的属性、方法和事件添加到自定义控件中,所前所述,我们使用重写Render方法来实现对HTML代码的输出。Render 方法采用 System.Web.UI.HtmlTextWriter 类型的参数。控件要发送到客户端的 HTML 作为字符串参数传递到 HtmlTextWriter Write 方法。

 

WEB控件是一种很特殊的类,它可以没有构造函数,也可以有。WEB控件本身是一个类,也只能是一个类,当然,可以有其它的类来帮它一起实现一些功能。

 

一个WEB控件运行时先后执行的一个说明:

 

1、初始化:初始化在传入 Web 请求生命周期内所需的设置,激发Init事件(OnInit 方法)

2、加载视图状态:自动填充控件的 ViewState 属性,处理LoadViewState 方法

3、处理回发数据:处理传入窗体数据,并相应地更新属性。调用LoadPostData 方法(如果已实现 IPostBackDataHandler);

4、加载:执行所有请求共有的操作,激发Load 事件(OnLoad 方法);

5、发送回发更改通知:引发更改事件以响应当前和以前回发之间的状态更改。处理RaisePostDataChangedEvent 方法(如果已实现 IPostBackDataHandler);

6、处理回发事件:处理引起回发的客户端事件,并在服务器上引发相应的事件。激发RaisePostBackEvent 方法 (如果已实现 IPostBackEventHandler);

7、预呈现:在呈现输出之前执行任何更新。处理PreRender 事件(OnPreRender 方法);

8、保存状态:自动将控件的 ViewState 属性保持到字符串对象中。此字符串对象被发送到客户端并作为隐藏变量发送回来。处理SaveViewState 方法; 

9、呈现:生成呈现给客户端的输出。处理Render或是CreateChildControls方法;

10、处置:执行销毁控件前的所有最终清理操作。处理Dispose方法; 

11、卸载:执行销毁控件前的所有最终清理操作。控件通常在 Dispose 中执行清除,而不处理此事件。激发UnLoad 事件(On UnLoad 方法)。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值