模板化控件概述

    使用模板化控件,页面开发者可以通过模板(template)来指定生成的全部或部分UI.模板是页面语法中的一部分,可以包括带有静态HTML以及其他文字文本的服务器控件.模板化控件提供了重要的自定义能力,通常被称做无外观控件(lookless controls),因为它们并没有生成预先确定的用户界面.

    理解样式和模板之间的差别是很重要的,它们是控件为页面开发者提供的用来定制生成的UI的两种不同的机制.使用样式,页面开发者可以定制生成的UI的可视化外观,而模板可以使页面开发者自定义所生成的UI的内容.例如,页面开发者可以使用样式来修改控件可能提供的文本的BackColor(背景色)和ForeColor(前景色)属性.而使用模板,页面开发者告诉控件应该生成什么元素:复选框、表格或一些其他内容.

     这里假设读者熟悉标准ASP.NET模板化控件,例如Repeater和DataList,下面主要讲解如何实现一个模块化控件.模块化控件的主要功能是通过System.Web.UI.ITemplate类型的一个或多个属性来表示的.用户通常是通过用声明性的语法来指定某个模板属性的,就像接下来的例子中所示的那样,该例子指定DataList控件的ItemTemplate属性.

   <asp:DataList runat="server">

               <ItemTemplate>

                         <asp:Label id="label" runat="server"

                                Text='<%# Container.DataItem %>'  />

                                &nbsp;&nbsp;

                          <asp:button button="button" runat="server"

                                 id="selectButton" CommandName="Select"

                                     Text="Select" ForeColor="Blue"/>

                            </ItemTemplate>

                      </asp:DataList>

    页面解析器解析模板标签内的文本,并生成一个解析树来表示模板的内容,就像解析整个页面时一样.解析器用解析树(由于System.Web.UI.ControlBuilder对象组成)来创建ITemplate类型的一个实例子.该ITemplate实例可以在给定的容器控件中创建表示模板内容的控件层次.下面是ITemplate接口的定义:

    public interface ITemplate  {

                            //Iteratively populates a provided control

                            //with a subhierarchy of child controls

                            //represented by the template.

                             void InstantiateIn(control container);

               }

               解析器把该ITemplate实例赋值给控件相应的ITemplate属性.当构造控件层次时,控件可以多次调用模板的InstantiateIn方法.每次调用InstantiateIn方法时,模板创建由模板的内容表示的控件数的一个副本。可以通过手工实现ITemplate接口.

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值