Asp.net控制項開發學習筆記(一)-控制項開發基礎
Asp.net控制項開發學習筆記-控制項開發基礎(一)
伺服器控制項開發基礎
當開發一個伺服器控制項時,首先要明白其內部的工作機理。其實在頁面內部每一點由asp.net返回的HTML代碼無論是簡單的<span>標籤,或者是button按鈕,或者是複雜的gridview控制項,都是由繼承自System.Web.UI.Control的對象產生的。
控制項的屬性
控制控制項的方法大多是通過控制項的屬性來操作的,通過控制伺服器控制項的屬性,就可以相應的改變伺服器產生的html.
下面是一個伺服器控制項的屬性:
在Visual Studio裡,當通過屬性視窗來改變控制項的屬性時,VS會自動將屬性添加到對應的aspx的HTML裡,而在html內添加屬性時,在屬性視窗裡也會對應顯示更改過的屬性視圖比如:
<asp:Button ID="Button1" runat="server" Text="Button" CommandName="cName" />
在屬性視窗裡會對應顯示,如:
當然某些控制項的屬性會略有不同,比如常用的Label控制項:
<asp:Label ID="Label1" runat="server">這裡是Text屬性</asp:Label>
在開始符號和結束符號之間的內容會被設定成Text屬性.
當然,最實用也是我們最常用的是通過C#以編程的方式動態修改控制項的屬性.這就不說了.
控制項的方法
控制項通過方法來操作更加複雜的控制項操作,通常在控制項的方法內部會有很複雜的過程,一般包括幾個內建函式和屬性的組合.比如:
private void LoadDropDownList()
{
ArrayList list = new ArrayList();
list.Add("Hello");
list.Add("Goodbye");
GridView1.DataSource = list;
GridView1.Databind();
}
這樣,通過調用Databind()方法,就可以講gridview和資料來源進行綁定.
控制項的事件
控制項通過事件來通知其它類或者用戶端其內部的某個狀態被改變。事件是一種靈活的機制,當控制項與用戶端進行互動的時候,事件會通過Http Post方法和伺服器進行互動,通過自動回傳機制,WEB開發中的事件表現起來就會像開發Windows FORM程式一樣(當然,速度是無法和Form相比的)
在Visual Studio中,可以在屬性視窗中通過黃色的閃電表徵圖來顯示和控制控制項的事件,如下:
當雙擊相應的事件後,會在後台產生預設的處理方法,命名規則為”控制項名_事件名”
WEB Page本質是一個控制項樹
在aspx頁面的頭部將Trace="true"設定到Page後,頁面會顯示相應的追蹤資訊,在Control Tree那一節,你會發現整個頁面其實就是一個控制項樹,:
根控制項?
OK,既然asp.net頁面的本質是一個控制項樹,按照C#是完全物件導向的語言慣例(所有的一切都是繼承於System.Object),那麼所有控制項共同的父類是什嗎?
在asp.net中,所有的控制項被分布在3個主要命名空間中,分別為:
System.Web.UI
System.Web.UI.WebControls
System.Web.UI.HtmlControls
它們之間的關係如所示
System.Web.UI命名空間
由可知,System.Web.UI處於繼承樹頂端的,而System.Web.UI.Control是所有控制項的基礎,所有的控制項必須強制直接或者間接的繼承Control類,而直接繼承Control類的是Page類,以及UserControl類。
System.Web.UI.HtmlControls命名空間
在System.Web.UI.HtmlControls命名空間中的對象,通過在html標籤中加入runat=”server”屬性,能夠將HTML中的標籤轉化為伺服器控制項。Asp.net的引擎會將的頁面中的HTML標籤和System.Web.UI.HtmlControls內的對象進行匹配。System.Web.UI.HtmlControls命名空間:
未完待續………