快速业务通道

探讨ASP.NET 2.0中的Web控件改进技术

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-21
,构造器接收方法名,链接说明,类型文本以及一个用作链接的提示信 息的描述等共四个参数。其中,第四个参数决定这个链接是否还出现在属性浏览 器的底部。

最后,我将把信息项添加到灵敏标签中—这是使用DesignerActionTextItem 类来实现的。

o_Items.Add(New DesignerActionTextItem( _
"ID: " & ctlEmailContact.ID, "Information"))

在此,构造器仅接收要显示的文本和该文本要放置的类型。

列表1(见源码文件)中的最终代码展示了我要添加到这个集合中的所有项。当 该方法完成时,它简单地返回这个集合。在后面一篇中,我们将讨论控件设计器 类的问题。

全面探讨ASP.NET 2.0中的Web控件改进技术之控件设计与模板设计篇(四)

一、控件设计器

控件设计器类派生自 System.Web.UI.Design.WebControls.CompositeControlDesigner。该类通过控 件类中声明的一个属性绑定到控件上:

DesignerAttribute(GetType(EmailContactDesigner))

在Web表单设计器中,它能够把控件的所有外观和行为特征呈现在用户面前。 当页面开发者把一个Web控件拖动到Web表单上时,页面开发者可以通过各种交互 方式取得控件的各种属性。这些属性将影响到页面开发者所看到的内容—不只是 影响到控件本身,还包括一些更微妙的幕后元素(例如灵敏标签)。

实际上,控件设计器能够在设计时刻生成一种与运行时刻不同的输出结果。 在有些情况下,一个控件在运行时刻可能没有任何可视化生成,但是却要求在设 计时刻实现一些显示,以便更容易地操作它。这种情况的一个示例就是, ASP.NET 2.0中所提供的声明性数据源。这些控件提供了数据存储和缓冲功能, 但是却没有可视化生成。然而,在设计时刻,它们表现为一个带有一些描述性文 本的灰色窗口—出现在web表单设计界面上。另一个关于不同生成的例子是,有 些控件不生成任何内容—除非它们被绑定到数据源。例如,当GridView(在1.1版 本中是DataGrid) 带有数据时,它看上去十分正常;但当不存在要显示的数据行 时,看上去什么东西也没有(或只显示为空的头部)。当你把一个这样的控件拖动 到Web表单上时,控件往往使用几个具有示例性质的空数据行进行显示—这是由 设计器类所提供的。

当Visual Studio需要决定在一个灵敏标签中显示的内容时,它存取设计器类 的一个称为ActionLists的属性,并且使用它的结果来构建该灵敏标签。该 ActionLists属性返回一个System.ComponentModel.Design命名空间中的 DesignerActionListCollection类型的对象。在我的设计器类中,我将重载这个 属性并且构建一个DesignerActionListCollection对象。我将返回的这个对象将 在类范围上加以声明,并且检查ActionLists属性是否是一个“nothing”值。

Private o_ActionListsAs_
DesignerActionListCollection

控件设计器中的值都是被缓冲的,因此不需要被重复创建,以便使设计器更 为有效地生成控件。

控件设计器类的一个重要特征是一个称为Component的成员。它是在控件设计 器类所继承的基类中进行声明的,并且包含一个对实际的控件(设计器类被绑定 到其上)的引用。我可以使用这个变量,并且把它转换成我的实际的控件类型— 既然该变量被声明为object类型。

Dim ctlEmailContact As EmailContact = _
CType(Component,EmailContact)

其结果是一个称为ctlEmailContact的对象,它包含一个这个类当前正在设计 的实际控件的强类型实例。所以,我在这个对象上作的任何改变或执行的任何操 作都将立即被反映到Web表单设计界面中,并呈现在页面开发者面前。

关于这个属性重载的其它方面的实现还包括,把我前面创建的ActionList类 的一个实例添加到我在类级上创建的DesignerActionListColle

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号