探讨ASP.NET 2.0中的Web控件改进技术
State方法。
现在,你可以使用ControlState来存储你认为足够重要的数据—如果不把它 存储起来,那么你的控件可能生成一些无用的内容。 记住,你在设计时刻对属性的修改将被硬编码到该控件的ASPX声明中,从而 在相邻的再次回寄之间自动地存储。然而,如果表单上的一个行为改变了一个控 件的属性,那么,这将会激活状态管理机制的使用。如果不把该属性存储在一个 状态中,那么,在下一次回寄时它将恢复到“硬编码”状态。 现在,总的来看,我们应该把与外观相关的属性存储在ViewState中,而把与 行为相关的属性存储在ControlState中。通过这种方式,如果一个页面开发者关 掉ViewState,那么你的控件尽管可能看起来样子别扭,但是仍能正确工作。 全面探讨ASP.NET 2.0中的Web控件改进技术之灵敏标签篇(三) 当你最开始在Visual Studio 2005中使用Windows表单控件或是ASP.NET Web 控件时,你首先会注意到,在许多控件右上角出现一个箭头形状的小玩意儿(见 图2中的示例)。点击这个箭头会弹出一个小窗口,其中包含该控件的一些属性, 还有一两个链接。微软设计这些灵敏标签是为了显示你需要操作的一些属性,其 最终目的是为了使该控件在一个页面或表单上能够正确工作;并且你将注意到, 它们比一个普通的快捷菜单更为精致。本节中我们讨论的内容既适用于Windows 表单控件也适用于ASP.NET服务器控件。 图2:EmailContact控件的灵敏标签 为了构建你自己的灵敏标签,你需要使用一个控件设计器类。事实上,你在 另外其它一些问题上也会使用这个类。但是,在我详细讨论设计器类前,我想先 创建一个ActionList类—这个类将定义我的灵敏标签中包含的元素。 一个ActionList类继承自System.ComponentModel.Design命名空间中的 DesignerActionList类。但是,在详细讨论这个类之前,让我先来解释一下存在 于灵敏标签中的四种类型的元素:category header,property mapping, action link以及information item。图2展示了我构建这个灵敏标签的目标。你 能够从中看出我所指的这四种类型的元素吗?我把这个灵敏标签根据标题分为三 类:“Appearance & Behavior”,“Support”和“Information”。其中 ,“Appearance & Behavior”分类中包含了两个属性:Mail Server和Pre -defined Display。这些实际上都是EmailContact控件本身的属性。“Support ”分类包含两个激活某些类型的一个行为的链接,而“Information”分类仅用 于显示信息。现在,有了这四种类型的元素,我将着手创建我的ActionList类。 我将创建一个称为EmailContactActionList的类,并且从 DesignerActionList中加以派生。(你可以在本文源码列表1中看到完整的类)。 我将创建一个构造器—它接收一个EmailContact实例作参数并且把它的范围扩大 到一个称为ctlEmailContact的类级变量。后面,当我把代码添加到设计器类时 ,你将看到这个构造器的使用情况。现在,我已经建立了一个类级的对象,它包 含我正在设计的Web控件的实例。 接下来,我将创建灵敏标签将显示的属性的“property mapping”。在图2中 ,你看到我已经在该灵敏标签中标出了两个属性:MailServer和 PreDefinedDisplay。这些将分别映射到EmailContact控件的称为MailServer和 PreDefinedDisplay的属性上。ActionList类中的属性映射将在get存取器中返回 控件的属性,而在set存取器中设置控件的属性。然而,由于微软设计 ActionList基础结构的方式决 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |