控件是在圖形用戶界面中的小功能塊,其中包括文本框,按鈕,復(fù)選框,列表框,標(biāo)簽,和許多其它工具。利用這些工具,用戶可以輸入數(shù)據(jù),進(jìn)行選擇并注明自己的喜好。
控件也用于結(jié)構(gòu)性工作,如驗(yàn)證,數(shù)據(jù)訪問(wèn),安全保證,創(chuàng)建母版頁(yè)和數(shù)據(jù)操作。
ASP.NET 使用五種類型的 Web 控件,它們是:
ASP.NET 服務(wù)器控件是在 ASP.NET 中使用的主要控件。這些控件可被分成以下幾類:
使用服務(wù)器控件的基本語(yǔ)法是:
<asp:controlType ID ="ControlID" runat="server" Property1=value1 [Property2=value2] />
此外,Visual Studio還具有以下特點(diǎn),以幫助產(chǎn)生無(wú)差錯(cuò)代碼:
具有可視化功能的 ASP.NET 服務(wù)器控件來(lái)源于 WebControl 類,并且繼承該類別的所有屬性,事件以及方法。
WebControl 類本身以及其他不具有可視化功能的服務(wù)器控件都來(lái)源于 System.Web.UI.Control 類。例如,PlaceHolder 控件或 XML 控件。
ASP.Net 服務(wù)器控件繼承了 WebControl 和 System.Web.UI.Control 類的所有屬性,事件,以及方法。
下表顯示了通用于所有服務(wù)器控件的屬性:
| 屬性 | 描述 |
|---|---|
| AccessKey | 同時(shí)按下該按鍵以及 Alt 鍵以將焦點(diǎn)移至控件。 |
| Attributes | 它是不對(duì)應(yīng)控件屬性的任意屬性(僅用于視圖呈現(xiàn))的集合。 |
| BackColor | 背景色。 |
| BindingContainer | 包含數(shù)據(jù)綁定的控件。 |
| BorderColor | 邊框顏色。 |
| BorderStyle | 邊框樣式。 |
| BorderWidth | 邊框?qū)挾取?/td> |
| CausesValidation | 引起驗(yàn)證時(shí)顯示。 |
| ChildControlCreated | 表示服務(wù)器控件的子控件是否建立。 |
| ClientID | HTML 標(biāo)記的控件 ID。 |
| Context | 與服務(wù)器控件關(guān)聯(lián)的 HttpContext 對(duì)象。 |
| Controls | 控件內(nèi)全部控件的集合。 |
| ControlStyle | Web 服務(wù)器控件的樣式。 |
| CssClass | CSS 類。 |
| DataItemContainer | 若命名器執(zhí)行 IDataItemContainer,則為命名器提供參考。 |
| DataKeysContainer | 若命名器執(zhí)行 IDataKeysControl,則為命名器提供參考。 |
| DesignMode | 表示控件在設(shè)計(jì)界面是否被使用。 |
| DisabledCssClass | 當(dāng)控件禁用時(shí),獲取或設(shè)置 CSS 類來(lái)應(yīng)用呈現(xiàn)的 HTML 元素。 |
| Enabled | 表示控件是否被禁用。 |
| EnableTheming | 表示主題是否適用于控件。 |
| EnableViewState | 表示是否維持控件的視圖狀態(tài)。 |
| Events | 獲取代表控件的事件處理程序的列表。 |
| Font | 字體設(shè)定。 |
| Forecolor | 前景顏色。 |
| HasAttributes | 表示控件是否具有屬性組。 |
| HasChildViewState | 表示當(dāng)前服務(wù)器控件的子控件是否具有任何已保存的視圖狀態(tài)設(shè)置。 |
| Height | 高度的像素或百分比。 |
| ID | 控件的標(biāo)識(shí)符。 |
| IsChildControlStateCleared | 表示包含在該控件內(nèi)部的控件是否具有控件狀態(tài)。 |
| IsEnabled | 獲取表示控件是否被啟用的值。 |
| IsTrackingViewState | 表示服務(wù)器控件是否會(huì)將更改保存到其視圖狀態(tài)。 |
| IsViewStateEnabled | 表示視圖狀態(tài)是否對(duì)該控件啟用。 |
| LoadViewStateById | 表示控件是否是由 ID 而非索引來(lái)參與加載其視圖狀態(tài)。 |
| Page | 包含控件的頁(yè)面。 |
| Parent | 家長(zhǎng)控制功能。 |
| RenderingCompatibility | 指定呈現(xiàn)的 HTML 將與之兼容的 ASP.NET 版本。 |
| Site | 當(dāng)設(shè)計(jì)界面顯示時(shí)容納當(dāng)前控件的承載器。 |
| SkinID | 獲取或設(shè)置適用于控件的皮膚。 |
| Style | 獲取將在 Web 服務(wù)器控件的外部標(biāo)簽作為樣式屬性顯示的文本屬性的集合。 |
| TabIndex | 獲取或設(shè)置 Web 服務(wù)器控件的索引標(biāo)簽。 |
| TagKey | 獲取對(duì)應(yīng)該 Web 服務(wù)器控件的 HtmlTextWriterTag 值。 |
| TagName | 獲取控件標(biāo)簽的名稱。 |
| TemplateControl | 包含該控件的模板。 |
| TemplateSourceDirectory | 獲取頁(yè)面的虛擬目錄或包含在該控件中的控件。 |
| ToolTip | 獲取或設(shè)置當(dāng)鼠標(biāo)指針停在 Web 服務(wù)器控件時(shí)顯示的文本。 |
| UniqueID | 唯一的標(biāo)識(shí)符。 |
| ViewState | 獲取能夠穿越同一頁(yè)面的多重請(qǐng)求后保存和恢復(fù)服務(wù)器控件視圖狀態(tài)的狀態(tài)信息詞典。 |
| ViewStateIgnoreCase | 表示 StateBag 對(duì)象是否不區(qū)分大小寫。 |
| ViewStateMode | 獲取或設(shè)置該控件的視圖狀態(tài)。 |
| Visible | 表示服務(wù)器控件是否可見(jiàn)。 |
| Width | 獲取或設(shè)置 Web 服務(wù)器控件的寬度。 |
服務(wù)器控件的方法在以下表格中呈現(xiàn):
| 方法 | 描述 |
|---|---|
| AddAttributesToRender | 添加需要呈現(xiàn)指定 HtmlTextWriterTag 的 HTML 屬性和樣式。 |
| AddedControl | 在子控件添加到控件對(duì)象的控件集合后調(diào)用。 |
| AddParsedSubObject | 通報(bào)服務(wù)器控件一個(gè)元素,XML 或 HTML 已被解析,并將該元素添加到服務(wù)器控件的控件集合。 |
| ApplyStyleSheetSkin | 將在頁(yè)面樣式表中定義的樣式屬性應(yīng)用到控件中。 |
| ClearCachedClientID | 基礎(chǔ)設(shè)施。設(shè)置緩存的 ClientID 值設(shè)置為 null。 |
| ClearChildControlState | 為服務(wù)器控件的子控件刪除控件狀態(tài)信息。 |
| ClearChildState | 為所有服務(wù)器控件的子控件刪除視圖狀態(tài)和控件狀態(tài)信息。 |
| ClearChildViewState | 為所有服務(wù)器控件的子控件刪除視圖狀態(tài)信息。 |
| CreateChildControls | 用于創(chuàng)建子控件。 |
| CreateControlCollection | 創(chuàng)建一個(gè)用于保存子控件的新控件集合。 |
| CreateControlStyle | 創(chuàng)建一個(gè)用于實(shí)現(xiàn)所有與樣式有關(guān)的屬性的樣式對(duì)象。 |
| DataBind | 將數(shù)據(jù)源綁定到服務(wù)器控件及其所有子控件。 |
| DataBind(Boolean) | 將數(shù)據(jù)源及可以引發(fā) DataBinding 事件的選項(xiàng)綁定到服務(wù)器控件及其所有子控件。 |
| DataBindChildren | 將數(shù)據(jù)源綁定到服務(wù)器控件的子控件。 |
| Dispose | 啟用一個(gè)服務(wù)器控件在其從內(nèi)存中釋放出來(lái)前去執(zhí)行最后的清理操作。 |
| EnsureChildControls | 確定服務(wù)器控件是否包含子控件。若沒(méi)有,則創(chuàng)建子控件。 |
| EnsureID | 為沒(méi)有標(biāo)識(shí)符的控件創(chuàng)建一個(gè)標(biāo)識(shí)符。 |
| Equals(Object) | 確定指定對(duì)象是否等于當(dāng)前對(duì)象。 |
| Finalize | 允許一個(gè)對(duì)象去嘗試釋放資源并在對(duì)象被回收站回收前執(zhí)行其他清理操作。 |
| FindControl(String) | 搜索當(dāng)前命名容器中具有指定 id 參數(shù)的服務(wù)器控件。 |
| FindControl(String, Int32) | 搜索當(dāng)前命名容器中具有指定 id 參數(shù)和整數(shù)的服務(wù)器控件。 |
| Focus | 為控件設(shè)置輸入焦點(diǎn)。 |
| GetDesignModeState | 獲取控件的設(shè)計(jì)時(shí)數(shù)據(jù)。 |
| GetType | 獲取當(dāng)前實(shí)例的類型。 |
| GetUniqueIDRelativeTo | 返回指定控件的唯一 ID 屬性的預(yù)固定部分。 |
| HasControls | 確定服務(wù)器控件是否包含子控件。 |
| HasEvents | 表示事件是否被控件或其他子控件注冊(cè)。 |
| IsLiteralContent | 確定服務(wù)器控件是否僅含有文字內(nèi)容。 |
| LoadControlState | 恢復(fù)控件狀態(tài)信息。 |
| LoadViewState | 恢復(fù)視圖狀態(tài)信息。 |
| MapPathSecure | 檢索絕對(duì)的或相對(duì)的虛擬路徑映射到的物理路徑。 |
| MemberwiseClone | 創(chuàng)建當(dāng)前對(duì)象的淺復(fù)制。 |
| MergeStyle | 復(fù)制指定樣式的 Web 控件的任意非空白元素,但不覆蓋該控件現(xiàn)有的任何樣式元素。 |
| OnBubbleEvent | 確定服務(wù)器控件的事件是否通過(guò)頁(yè)面的 UI 服務(wù)器控件層級(jí)。 |
| OnDataBinding | 引發(fā)數(shù)據(jù)綁定事件。 |
| OnInit | 引發(fā) Init 事件。 |
| OnLoad | 引發(fā)加載事件。 |
| OnPreRender | 引發(fā) PreRender 事件。 |
| OnUnload | 引發(fā)卸載事件。 |
| OpenFile | 獲取用于讀取文件的流。 |
| RemovedControl | 在子控件從控件對(duì)象的控件集合中移除后調(diào)用。 |
| Render | 顯示控件到指定的 HTML 作者。 |
| RenderBeginTag | 顯示控件的 HTML 開(kāi)口標(biāo)簽到指定作者。 |
| RenderChildren | 輸出服務(wù)器控件子級(jí)的內(nèi)容到提供的 HtmlTextWriter 對(duì)象中,從而編寫呈現(xiàn)在客戶端上的內(nèi)容。 |
| RenderContents | 顯示控件內(nèi)容到指定作者。 |
| RenderControl(HtmlTextWriter) | 輸出服務(wù)器控件內(nèi)容到提供的 HtmlTextWriter 對(duì)象并在啟用跟蹤的情況下保存關(guān)于控件的跟蹤信息。 |
| RenderEndTag | 顯示控件的 HTML 結(jié)束標(biāo)簽到指定作者。 |
| ResolveAdapter | 獲取負(fù)責(zé)呈現(xiàn)指定控件的控件適配器。 |
| SaveControlState | 保存自頁(yè)面回發(fā)到服務(wù)器后出現(xiàn)的服務(wù)器控件的狀態(tài)改變。 |
| SaveViewState | 保存調(diào)用 TrackViewState 方法之后修改的任意狀態(tài)。 |
| SetDesignModeState | 為控件設(shè)置設(shè)計(jì)時(shí)數(shù)據(jù)。 |
| ToString | 返回代表當(dāng)前對(duì)象的字符串。 |
| TrackViewState | 引發(fā)控件跟蹤其視圖狀態(tài)的變化,使其可以存儲(chǔ)在該對(duì)象的視圖狀態(tài)屬性中。 |
讓我們來(lái)看一看一個(gè)特定的服務(wù)器控件 - 樹(shù)型視圖控件。樹(shù)視圖控件屬于導(dǎo)航控件。其他導(dǎo)航控件是:菜單控件和 SiteMapPath 控件。
在頁(yè)面上添加樹(shù)視圖控件。從任務(wù)中選擇編輯結(jié)點(diǎn)...使用樹(shù)視圖結(jié)點(diǎn)編輯器編輯每個(gè)結(jié)點(diǎn),如下所示:
http://wiki.jikexueyuan.com/project/asp-net/images/asp.net_edit_nodes.jpg" alt="image" />
當(dāng)成功創(chuàng)建結(jié)點(diǎn)之后,設(shè)計(jì)視圖下會(huì)有如下顯示:
http://wiki.jikexueyuan.com/project/asp-net/images/asp.net_edit_nodes2.jpg" alt="image" />
AutoFormat... 任務(wù)允許您規(guī)定樹(shù)視圖的格式,如下所示:
http://wiki.jikexueyuan.com/project/asp-net/images/asp.net_autoformat.jpg" alt="image" />
在頁(yè)面上添加一個(gè)標(biāo)簽控件和文本框控件并分別命名為 lblmessage 和 txtmessage。
寫幾行代碼,以確保當(dāng)一個(gè)特定結(jié)點(diǎn)被選中時(shí),標(biāo)簽控件顯示結(jié)點(diǎn)文字且文本框顯示所有其下的子結(jié)點(diǎn)(如有)。后臺(tái)文件的代碼應(yīng)如下所示:
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
namespace eventdemo {
public partial class treeviewdemo : System.Web.UI.Page {
protected void Page_Load(object sender, EventArgs e) {
txtmessage.Text = " ";
}
protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e) {
txtmessage.Text = " ";
lblmessage.Text = "Selected node changed to: " + TreeView1.SelectedNode.Text;
TreeNodeCollection childnodes = TreeView1.SelectedNode.ChildNodes;
if(childnodes != null) {
txtmessage.Text = " ";
foreach (TreeNode t in childnodes) {
txtmessage.Text += t.Value;
}
}
}
}
}
執(zhí)行頁(yè)面以觀看效果,您將可以展開(kāi)和折疊結(jié)點(diǎn)。
http://wiki.jikexueyuan.com/project/asp-net/images/asp.net_control_nodes.jpg" alt="image" />