ASP.NET复合控件与CompositeControl类

开发 后端
本文介绍ASP.NET复合控件与CompositeControl类的用法。该类用于解决计时问题。

用于解决设计时问题的 CompositeControl

随 ASP.NET 2.0 一同提供了一个名为 CompositeControl 的基类。因此,新的非数据绑定复合控件应该从该类派生而不是从 WebControl 派生。在开发控件方面,CompositeControl 的用法变动不大。您仍然需要替换 CreateChildControls 并按先前所述方式编码。那么 CompositeControl 的作用是什么?让我们先从其原型着手:

  1. public class CompositeControl :WebControl,   
  2. INamingContainer,   
  3. ICompositeControlDesignerAccessor  

使用该类就无需再用 INamingContainer 装饰控件,但这实际上并不是很重要,因为接口只是一个标记并且不包含任何方法。更为重要的是,该类实现了一个名为 ICompositeControlDesignerAccessor 的全新接口。

  1. public interface ICompositeControlDesignerAccessor  
  2. {  
  3. void RecreateChildControls();  
  4. }  

此接口由复合控件的标准设计器用于在设计时重建控件树。以下是 CompositeControl 中方法的默认实现过程。

  1. void ICompositeControlDesignerAccessor.RecreateChildControls()  
  2. {  
  3. base.ChildControlsCreated = false;  
  4. EnsureChildControls();  
  5. }  

简言之,如果您从 CompositeControl 派生复合控件,就不会遇到设计时的故障,而且无需采用技巧和妙计就可以使控件在运行时和设计时都能正常运行。

要充分理解此接口的重要性,可试以寄存某 LabelTextBox 复合控件的示例页为例,并将其转换为设计模式。控件在运行时工作正常,但在设计时却不可见。

 只有复合控件从 CompositeControl 派生才对它们进行特殊的设计时处理

图 5:只有复合控件从 CompositeControl 派生才对它们进行特殊的设计时处理

如果只是用 CompositeControl 替换 WebControl,则控件在运行时仍然保持正常工作,而在设计时也会运行良好。

 在设计时运行良好的复合控件

图 6:在设计时运行良好的复合控件

【编辑推荐】

  1. ASP.NET复合控件的呈现引擎
  2. ASP.NET复合控件简介及要点一览
  3. ASP.NET控件开发基础之复合控件事件处理浅析
  4. ASP.NET服务器控件之RenderContents应用示例
  5. ASP.NET控件开发基础之复合控件浅析
责任编辑:yangsai 来源: MSDN
相关推荐

2009-08-07 15:32:28

ASP.NET复合控件

2009-08-06 18:18:27

ASP.NET控件开发ASP.NET复合控件

2009-08-07 15:45:26

ASP.NET复合控件数据绑定

2009-07-22 18:08:00

ASP.NET基类

2009-07-30 16:52:38

复合控件ASP.NET服务器控

2009-07-21 15:50:47

ASP.NET控件JavaScript

2009-08-06 18:32:00

ASP.NET控件开发ASP.NET复合控件

2009-08-07 14:55:15

ASP.NET复合控件

2009-07-27 17:25:53

ASP.NET验证控件

2009-08-17 09:24:25

ASP.NET控件

2009-07-27 16:19:59

ASP.NET报表控件

2009-08-03 15:08:00

SqlDataSour

2009-07-27 13:52:36

Panel控件ASP.NET

2009-08-05 15:57:03

ASP.NET控件ID

2009-07-29 13:50:26

UpdatePanelASP.NET

2009-08-04 10:43:59

ASP.NET控件开发

2009-08-19 13:44:00

ASP.NET Lis

2009-08-27 16:59:20

ASP.NET用户控件

2009-07-21 17:18:26

UpdateProgrASP.NET AJA

2009-07-24 16:15:00

扩展ASP.NET G
点赞
收藏

51CTO技术栈公众号