技术开发 频道

asp.net控件开发基础(7)

      [IT168 技术文档] 上一篇写了控件样式的一些基础的东西,接着我们继续讨论asp.net控件开发的一些东西.

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

1.复合控件概念

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

2.复合控件的呈现

(1)一般控件的呈现

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

示例一
          public override void Render(HtmlTextWriter writer)
      
{
 ..
              writer.RenderBeginTag(HtmlTextWriterTag.Td);
          writer.AddAttribute(HtmlTextWriterAttribute.Name, "CreditCardNo");
          writer.AddAttribute(HtmlTextWriterAttribute.Id, "CreditCardNo");
          writer.AddAttribute(HtmlTextWriterAttribute.Type, "text");
          writer.RenderBeginTag(HtmlTextWriterTag.Input);
          writer.RenderEndTag();
          writer.RenderEndTag();
          
}

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

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

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

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

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

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



0
相关文章