在前面的系列文章中,笔者已经列举了几个实现自定义服务器控件的示例。通过这些示例,读者初步接触了有关创立服务器控件属性的内容。例如,应用私有变量、视图状态、控件状态等实现属性等等。固然读者通过这些内容可以懂得实现属性的一些基础知识,但是这还是不够的。从本节开端,将针对实现自定义服务器控件属性的标题展开讲解。本节重点先容实现自定义服务器控件属性的一些基础概念和简略属性的基础实现方法等内容。
1. 控件属性基础概念
本小节先容有关创立服务器控件属性的基础内容,具体内容包含:(1)属性类型和情势;(2)从Control和WebControl持续的属性;(3)与属性相干的设计时元数据attribute。
1) 属性类型和情势
通常情况下,服务器控件属性可以分为两种类型:简略属性和复杂属性。
简略属性是指属性值可以很轻易转换为字符串表达式的属性,这种属性的值通常为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'一起定义。通常为以下情势:
<MyControl:CustomerControl id='demo1' runat='server' PropertyName='PropertyValue'/>
其中PropertyName为一个不带连字符的单词。例如:
<asp:Button id='button1' runat='server' Text='Submit'/>
此处的属性Text属于通用情势属性。
· 连字符情势属性
这种标记情势的属性位于控件标记内部,带有连字符是这种情势属性的最大特点。其情势为:
<MyControl:CustomerControl id='demo1' runat='server' Sub-PropertyName='PropertyValue'/>
其中Sub-PropertyName为一个带连字符的单词组合。例如:
<asp:Label id='label1' runat='server' Font-Size='Medium' Font-Underline='True' />
在上面的代码中,Font-Size和Font-Underline就是典范的连字符情势属性。
· 内部嵌套情势属性
凡是具有这种标记情势的属性均为复杂属性。它是以嵌套情势在控件标记内部声明某属性集的子属性。其情势类似:
<asp:DataGrid id='DataGrid1' runat='server'>
<HeaderStyle ForeColor='#FFFFCC' BackColor='#990000'>
</HeaderStyle>
<FooterStyle ForeColor='#330099' BackColor='#FFFFCC'>
</FooterStyle>
</asp:DataGrid>
其中HeaderStyle是内部嵌套情势属性,ForeColor和BackColor是HeaderStyle属性的子属性。FooterStyle与HeaderStyle是一样的,也是内部嵌套情势属性。
· 内部嵌套情势默认属性
这种标记情势的属性通常用于服务器控件的聚集属性,具有这种情势的属性必定是复杂属性。该情势属性与上文所述'内部嵌套情势属性'的标记情势基础雷同。不同之处在于:当某控件具有这种属性时,控件标记中只包含该情势属性,不能包含其他任何属性。这就是为什么称为'默认'的原因。其情势类似:
<asp:DropDownList id='DropDownList1' runat='server'>
<asp:ListItem>1</asp:ListItem>
<asp:ListItem>2</asp:ListItem>
<asp:ListItem>3</asp:ListItem>
<asp:ListItem>4</asp:ListItem>
</asp:DropDownList>
其中属性ListItem就是典范的内部嵌套情势默认属性。
2) 从Control和WebControl持续的属性
如前面文章所述,假如需要开发没有UI的控件或者组合其他浮现它们自己的UI的控件,则从System.Web.UI.Control基类派生。为此,读者应当懂得一些Control类的常见属性。如表1列举了Control基类常用属性,它们在开发服务器控件过程中经常被应用。
页框架
感谢 靓哥 的投稿 本文仅代表作者观点,与楚天站长站立场无关。