在前面的系列文章中,笔者已经列举了几个实现自定义服务器控件的示例。通过这些示例,读者初步接触了有关创建服务器控件属性的内容。例如,使用私有变量、视图状态、控件状态等实现属性等等。虽然读者通过这些内容可以了解实现属性的一些基本知识,但是这还是不够的。从本节开始,将针对实现自定义服务器控件属性的问题展开。本节重点介绍实现自定义服务器控件属性的一些基本概念和简单属性的基本实现方法等内容。
本小节介绍有关创建服务器控件属性的基本内容,具体内容包括:(1)属性类型和形式;(2)从Control和WebControl继承的属性;(3)与属性相关的设计时元数据attribute。
简单属性是指属性值可以很容易转换为字符串表达式的属性,这种属性的值通常为Boolean、Byte、Char、Double、Enum、Int32、DateTime等简单数值类型,以及String类型和枚举类型。开发人员可以通过添加代码,将简单属性存储在ViewState字典中,以在回发间进行状态管理。如果一个属性的类型是本身具有属性(称为子属性)的类,则该属性就称为复杂属性。例如,WebControl类的Font属性的类型是本身具有属性(如Bold和Name)的FontInfo类。Bold和Name是WebControl的Font属性的子属性。ASP.NET页框架可通过使用带有连字符的语法(例如Font-Bold=true)在控件的开始标记上保存子属性,但如果在控件的标记(例如<font Bold=true>)中保存子属性,则子属性在页中的可读性更强。
在上文中谈到了属性的标记形式,即添加连字符的形式。实际上,不同的属性表现出不同的标记形式。为了加深对简单属性和复杂属性的认识,下面介绍一下有关属性的4种标记形式。
这是一种最为常见的属性标记形式。这种形式的属性标记位于控件内部,与runat=server一起定义。通常为以下形式:
凡是具有这种标记形式的属性均为复杂属性。它是以嵌套形式在控件标记内部声明某属性集的子属性。其形式类似:
这种标记形式的属性通常用于服务器控件的集合属性,具有这种形式的属性必然是复杂属性。该形式属性与上文所述内部嵌套形式属性的标记形式基本相同。不同之处在于:当某控件具有这种属性时,控件标记中只包含该形式属性,不能包含其他任何属性。这就是为什么称为默认的原因。其形式类似:
推荐:
网友评论 ()条 查看