屬性全接觸(一)
本系列上篇文章有幾位抬愛,鼓勵了幾句,所以勁頭又足了,這不,這篇文章就出得快了,:)
希望能繼續得到鼓勵和指正。
這次我們來探討下控件開發中的屬性設計的方方面面,屬性本是各種.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
{
}