ASP.NET控件开发的基本概念

开发 后端
本文介绍ASP.NET控件开发的基本概念,包括介绍复合控件概念,复合控件的呈现和完成基本复合控件基本呈现等。

我们继续讨论ASP.NET控件开发的一些东西.

这次我们要讨论的是复合控件.本文无法一步到位完整介绍,因为讨论的篇幅比较大,所以分两次写,这次就先讲些基本概念吧,剩着的下次写.好象复合控件网上已经有很多教程了,相信大家也看过很多.如果看过的朋友就当我再废话一便,没看过的朋友希望能给你带来帮助.

1.复合控件概念

复合控件跟用户控件有很多相似点,***不同就是用户控件后缀为ascx,而复合控件编译后则为dll文件,还可以分发给大家使用,另外其他不同点还请参考MSDN吧,说白了,复合控件灵活性更大.

2.复合控件的呈现

(1)一般控件的呈现

从***篇到第六篇为止,我们用以呈现控件的方法介绍过的有Render方法和RenderContents方法.回顾一下吧,看以下其中的一小段代码.

  1. publicoverridevoidRender(HtmlTextWriterwriter)  
  2. {  
  3. ..  
  4. writer.RenderBeginTag(HtmlTextWriterTag.Td);  
  5. writer.AddAttribute(HtmlTextWriterAttribute.Name,"CreditCardNo");  
  6. writer.AddAttribute(HtmlTextWriterAttribute.Id,"CreditCardNo");  
  7. writer.AddAttribute(HtmlTextWriterAttribute.Type,"text");  
  8. writer.RenderBeginTag(HtmlTextWriterTag.Input);  
  9. writer.RenderEndTag();  
  10. writer.RenderEndTag(); 

以前我们所做的控件都是上面这样的写法.我们可以认为在Render方法实现了以下两个功能.

◆标签布局(如td标签,让控件呈现的好看点-_-)
◆呈现的标签(如input标签)

(2)复合控件的呈现方法

我们知道ASP.NET控件开发里面已经提供给了我们像TextBox这样的控件了,就如组装电脑一下,你可以组装.net提供你现有的控件,然后重新拼凑成一个新的控件,这样便成了复合控件.但其呈现方法却又不同.

复合控件是以包含子控件的形式呈现的,具体的呈现交给子控件自己去做,因为子控件自身都已经实现了其呈现方法(每个控件都继承自Control类).假设你还不明白就看下面的图吧.

LabelTextBox1为复合控件,LabelTextBox2则不是.两者的呈现方式是不同的.具体实现方法请看下文

具体实现方法

3.完成基本复合控件基本呈现

(1)首先你要熟悉以下的属性和方法
◆Control.CreateChildControls 方法用于创建子控件
◆Control.EnsureChildControls 方法用于确认是否已创建子控件,如果未创建完成的话则调用CreateChildControls 方法创建子控件
◆Control.ChildControlsCreated 属性 获取一个值,是否已创建子控件

(2)了解并实现INamingContainer接口

用户控件UserControl类则继承了INamingContainer接口,确包保子控件具有唯一的ID名称,那复合控件也需要实现这个接口达到一样的目的,这个是值得注意的地方.

复合控件以类撰写的方法来添加控件即CreateChildControls 方法,而非在Render方法中以下面方式实现

  1. writer.RenderBeginTag(HtmlTextWriterTag.Input); 

4.控件状态以及性能方面的选择

上面的例子你会发现,再点击按钮以后,textbox值状态被保存了下来,还记得以前以Render方法直接呈现input标签的控件吗?在点击按钮以后textbox值状态是无法保存的.

我们讨论了数据回传的一些知识,我们也定义了一个textbox控件,在点击按钮以后,可以***的保存其值状态.至于原因,还请大家参考下文,作者已经分析的很清楚了.

ASP.NET控件开发速成教程:生成复合控件

虽然创作复合控件相对比较容易,但是由于在撰写时必须创建子控件,所以会出现性能系统开销。如果您想优化控件的性能,可以通过重写 Render 方法,自己实现呈现逻辑。另外,必须实现控件所需的任何回发数据处理和回发事件处理。

本来想一起把事件处理和样式也写完了,但想写好篇幅太多了,这次就先写到这里吧,因为想把自己心里的意思表达明白还真的需要费一定时间去想的.下次我们继续讨论复合控件的事件和样式

【编辑推荐】

  1. 微软发布ASP.NET MVC 2预览版 多项功能更新
  2. ASP.NET服务器自定义控件安全准则
  3. ASP.NET编程规范之编码规范浅析
  4. 关于ASP.NET Session的一点认识
  5. ASP.NET编程工具ASP.NET Web Matrix详细介绍
责任编辑:佚名 来源: 博客园
相关推荐

2009-07-22 14:28:43

学习ASP.NET MASP.NET MVC

2009-08-04 10:43:59

ASP.NET控件开发

2010-01-13 16:26:57

VB.NET通知控件

2010-01-15 13:30:50

VB.NET Prog

2009-08-07 15:24:16

ASP.NET模板控件

2009-07-27 13:52:36

Panel控件ASP.NET

2009-08-06 10:49:45

ASP.NET服务器控

2009-08-07 14:42:02

ASP.NET控件开发

2009-08-07 15:34:15

ASP.NET数据绑定

2009-08-06 18:18:27

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

2009-09-09 09:09:17

ASP.NET MVC

2009-07-24 15:35:00

ASP.NET Gri

2009-08-04 11:29:14

HTML代码ASP.NET控件

2009-07-20 13:32:24

ScriptManagASP.NET

2009-09-11 09:09:00

ASP.NETAdRotator控件

2009-08-07 13:31:41

ASP.NET控件开发

2009-08-07 14:05:21

ASP.NET控件

2009-07-30 16:52:38

复合控件ASP.NET服务器控

2009-08-07 10:34:56

ASP.NET控件开发

2009-08-06 15:21:45

ASP.NET控件开发RenderConte
点赞
收藏

51CTO技术栈公众号