Welcome 微信登录

首页 / 网页编程 / ASP.NET / ASP.net控件开发系列之三

ASP.net控件开发系列之三2011-01-27Lyn属性全接触(一)

本系列上篇文章有几位抬爱,鼓励了几句,所以劲头又足了,这不,这篇文章就出得快了,:)

希望能继续得到鼓励和指正。

这次我们来探讨下控件开发中的属性设计的方方面面,属性本是各种.net下语言的最基本语法,但控件做为一种提供给程序员二次开发的发布件,其功能的强大与使用的灵活都离不开良好的属性设计,所以我觉得属性设计是控件开发中第一座要打下的堡垒。

首先我们来看一段.aspx文件中的HTML样式的代码:

<asp:DropDownList id="DropDownList1" runat="server" Font-Bold="True">
<asp:ListItem Value="1">1</asp:ListItem>
<asp:ListItem Value="2">2</asp:ListItem>
</asp:DropDownList>

这种代码大家都写过无数次了,不过,现在我们要从另一种角度来分析这段代码:

DropDownList控件在和用户交互时,它没有把它的属性一股脑放在一起来表示出来,而是分为以下几种情况:

1.像ID、Runat、Font-Bold这些,放在<>标记里;

2.Font-Bold不同于其它,它有一个短横分隔成两部分,这种表示方式不是Font-Bold是一个属性的名称,而是说明它是一个子属性,是Font属性(Font类)的Bold属性,对应.cs文件的写法是:Font.Bold;

3.ListItem放在了DropDownList的一双<>标记的中间,而不是标记之类,同样1、2也放在了ListItem的中间。

下面我们来分别看看这几种属性记录方式是怎么实现的。

有一个Attribute来做这件事件PersistenceMode(System.Web.UI.PersistenceModeAttribute)。

它有以下几个值供选择:

Attribute(default)属性保存在控件的标签里;默认值

EnCodedInnerDefaultProperty 属性是编码的HTML,放在控件标签对的中间保存,以上的ListItem就是这样保存Text属性的(1、2);

[PersistenceMode(PersistenceMode.EnCodedInnerDefaultProperty)]
public string Text
{

}