控件是圖形用戶界面的小型構(gòu)建塊,其中包括文本框,按鈕,復(fù)選框,列表框,標簽以及許多其他工具。使用這些工具,用戶可以輸入數(shù)據(jù),進行選擇并設(shè)置他們的偏好。
控件還用于結(jié)構(gòu)化作業(yè),如驗證,數(shù)據(jù)訪問,安全性,創(chuàng)建母版頁和數(shù)據(jù)操作。
ASP.NET使用五種類型的Web控件,它們是:
ASP.NET服務(wù)器控件是ASP.NET中使用的主要控件。這些控件可以分為以下幾類:
AdRotator,FileUpload和Calendar控件。使用服務(wù)器控件的語法是:
<asp:controlType ID ="ControlID" runat="server" Property1=value1 [Property2=value2] />
另外,visual studio 具有以下功能,可以幫助制作無誤碼:
具有可視方面的ASP.NET服務(wù)器控件是從WebControl類派生的,并繼承了此類的所有屬性,事件和方法。
WebControl類本身和一些其他不可視化呈現(xiàn)的服務(wù)器控件都是從System.Web.UI.Control類派生的。例如,PlaceHolder控件或XML控件。
ASP.Net服務(wù)器控件繼承WebControl和System.Web.UI.Control類的所有屬性,事件和方法。
下表顯示了所有服務(wù)器控件通用的繼承屬性:
| 編號 | 屬性 | 描述 |
|---|---|---|
| 1 | AccessKey |
用Alt鍵按下此鍵將焦點移到控件上。 |
| 2 | Attributes |
它是任意屬性(僅用于渲染)的集合,它們不與控件上的屬性相對應(yīng)。 |
| 3 | BackColor |
背景顏色。 |
| 4 | BindingContainer |
包含此控件的數(shù)據(jù)綁定的控件。 |
| 5 | BorderColor |
邊框顏色。 |
| 6 | BorderStyle |
邊框格式 |
| 7 | BorderWidth |
邊框?qū)挾?/td> |
| 8 | CausesValidation |
指示是否驗證。 |
| 9 | ChildControlCreated |
它指示服務(wù)器控件的子控件是否已創(chuàng)建。 |
| 10 | ClientID |
HTML標記的控件ID。 |
| 11 | Context |
與服務(wù)器控件關(guān)聯(lián)的HttpContext對象。 |
| 12 | Controls |
包含在控件中的所有控件的集合。 |
| 13 | ControlStyle |
Web服務(wù)器控件的風(fēng)格(樣式)。 |
| 14 | CssClass |
CSS類 |
| 15 | DataItemContainer |
如果命名容器實現(xiàn)了IDataItemContainer,則獲取對命名容器的引用。 |
| 16 | DataKeysContainer |
如果命名容器實現(xiàn)了IDataKeysControl,則獲取對命名容器的引用。 |
| 17 | DesignMode |
它指示控件是否在設(shè)計表面上使用。 |
| 18 | DisabledCssClass |
獲取或設(shè)置CSS控件禁用時應(yīng)用于呈現(xiàn)的HTML元素的CSS類。 |
| 19 | Enabled |
指示控件是否變灰。 |
| 20 | EnableTheming |
表示主題是否適用于控件。 |
| 21 | EnableViewState |
指示是否保持控件的視圖狀態(tài)。 |
| 22 | Events |
獲取控件的事件處理程序委托的列表。 |
| 23 | Font |
字體 |
| 24 | Forecolor |
前景顏色。 |
| 25 | HasAttributes |
指示控件是否設(shè)置了屬性。 |
| 26 | HasChildViewState |
指示當前服務(wù)器控件的子控件是否具有任何保存的視圖狀態(tài)設(shè)置。 |
| 28 | Height |
以像素或%為單位來設(shè)置高度。 |
| 30 | ID |
控件的標識符。 |
| 31 | IsChildControlStateCleared |
指示此控件中包含的控件是否具有控件狀態(tài)。 |
| 32 | IsEnabled |
獲取一個指示控件是否啟用值。 |
| 33 | IsTrackingViewState |
它指示服務(wù)器控件是否將更改保存到其視圖狀態(tài)。 |
| 34 | IsViewStateEnabled |
它指示是否對此控件啟用視圖狀態(tài)。 |
| 35 | LoadViewStateById |
它指示控件是否參與通過ID而不是索引來加載其視圖狀態(tài)。 |
| 36 | Page |
包含該控件的頁面。 |
| 37 | Parent |
父控件。 |
| 38 | RenderingCompatibility |
它指定了呈現(xiàn)的HTML將兼容的ASP.NET版本。 |
| 39 | Site |
在設(shè)計圖面上呈現(xiàn)時承載當前控件的容器。 |
| 40 | SkinID |
獲取或設(shè)置要應(yīng)用于控件的外觀。 |
| 41 | Style |
獲取將在Web服務(wù)器控件的外部標記上呈現(xiàn)為樣式屬性的文本屬性的集合。 |
| 42 | TabIndex |
獲取或設(shè)置Web服務(wù)器控件的選項卡索引。 |
| 43 | TagKey |
獲取對應(yīng)于此Web服務(wù)器控件的HtmlTextWriterTag值。 |
| 44 | TagName |
獲取控件標記的名稱。 |
| 45 | TemplateControl |
包含此控件的模板。 |
| 46 | TemplateSourceDirectory |
獲取包含此控件的頁面或控件的虛擬目錄。 |
| 47 | ToolTip |
獲取或設(shè)置鼠標指針懸停在Web服務(wù)器控件上時顯示的文本。 |
| 48 | UniqueID |
唯一標識符。 |
| 49 | ViewState |
獲取狀態(tài)信息的字典,該字典可跨多個同一頁面的請求保存和恢復(fù)服務(wù)器控件的視圖狀態(tài)。 |
| 50 | ViewStateIgnoreCase |
它指出StateBag對象是否區(qū)分大小寫。 |
| 51 | ViewStateMode |
獲取或設(shè)置此控件的視圖狀態(tài)模式。 |
| 52 | Visible |
它指示服務(wù)器控件是否可見。 |
| 53 | Width |
獲取或設(shè)置Web服務(wù)器控件的寬度。 |
服務(wù)器控件的方法
下表提供了服務(wù)器控件的方法:
| 編號 | 方法 | 描述 |
|---|---|---|
| 1 | AddAttributesToRender |
將需要呈現(xiàn)的HTML屬性和樣式添加到指定的HtmlTextWriterTag。 |
| 2 | AddedControl |
在子控件添加到控件對象的控件集合后調(diào)用。 |
| 3 | AddParsedSubObject |
通知服務(wù)器控件已經(jīng)解析了元素(XML或HTML),并將該元素添加到服務(wù)器控件的控件集合中。 |
| 4 | ApplyStyleSheetSkin |
將頁面樣式表中定義的樣式屬性應(yīng)用于控件。 |
| 5 | ClearCachedClientID |
基礎(chǔ)結(jié)構(gòu),將緩存的ClientID值設(shè)置為null。 |
| 6 | ClearChildControlState |
刪除服務(wù)器控件的子控件的控件狀態(tài)信息。 |
| 7 | ClearChildState |
刪除所有服務(wù)器控件的子控件的視圖狀態(tài)和控件狀態(tài)信息。 |
| 8 | ClearChildViewState |
刪除所有服務(wù)器控件的子控件的視圖狀態(tài)信息。 |
| 9 | CreateChildControls |
用于創(chuàng)建子控件。 |
| 10 | CreateControlCollection |
創(chuàng)建一個新的ControlCollection對象來保存子控件。 |
| 11 | CreateControlStyle |
創(chuàng)建用于實現(xiàn)所有樣式相關(guān)屬性的樣式對象。 |
| 12 | DataBind |
將數(shù)據(jù)源綁定到服務(wù)器控件及其所有子控件。 |
| 13 | DataBind(Boolean) |
將數(shù)據(jù)源綁定到服務(wù)器控件及其所有子控件,并使用一個選項來引發(fā)DataBinding事件。 |
| 14 | DataBindChildren |
將數(shù)據(jù)源綁定到服務(wù)器控件的子控件。 |
| 15 | Dispose |
使服務(wù)器控件在從內(nèi)存釋放之前執(zhí)行最終清理。 |
| 16 | EnsureChildControls |
確定服務(wù)器控件是否包含子控件。如果沒有,則創(chuàng)建子控件。 |
| 17 | EnsureID |
為沒有標識符的控件創(chuàng)建一個標識符。 |
| 18 | Equals(Object) |
確定指定的對象(Object)是否等于當前對象。 |
| 19 | Finalize |
在對象被垃圾回收回收之前,允許對象嘗試釋放資源并執(zhí)行其他清理操作。 |
| 20 | FindControl(String) |
使用指定的id參數(shù)在當前命名容器中搜索服務(wù)器控件。 |
| 21 | FindControl(String, Int32) |
在當前命名容器中搜索具有指定標識和整數(shù)的服務(wù)器控件。 |
| 22 | Focus |
將輸入焦點設(shè)置為控件。 |
| 23 | GetDesignModeState |
獲取控件的設(shè)計時數(shù)據(jù)。 |
| 24 | GetType |
獲取當前實例的類型。 |
| 25 | GetUniqueIDRelativeTo |
返回指定控件的UniqueID屬性的前綴部分。 |
| 26 | HasControls |
確定服務(wù)器控件是否包含任何子控件。 |
| 27 | HasEvents |
指示是否為控件或任何子控件注冊事件。 |
| 28 | IsLiteralContent |
確定服務(wù)器控件是否僅保存文字內(nèi)容。 |
| 29 | LoadControlState |
恢復(fù)控制狀態(tài)信息。 |
| 30 | LoadViewState |
恢復(fù)視圖狀態(tài)信息。 |
| 31 | MapPathSecure |
檢索虛擬路徑(絕對或相對)映射到的物理路徑。 |
| 32 | MemberwiseClone |
創(chuàng)建當前對象的淺表副本。 |
| 33 | MergeStyle |
將指定樣式的非空白元素復(fù)制到Web控件,但不覆蓋控件的任何現(xiàn)有樣式元素。 |
| 34 | OnBubbleEvent |
確定是否將服務(wù)器控件的事件傳遞給頁面的UI服務(wù)器控件層次結(jié)構(gòu)。 |
| 35 | OnDataBinding |
引發(fā)數(shù)據(jù)綁定事件。 |
| 36 | OnInit |
引發(fā)Init事件。 |
| 37 | OnLoad |
引發(fā)Load事件。 |
| 38 | OnPreRender |
引發(fā)PreRender事件。 |
| 39 | OnUnload |
引發(fā)Unload事件。 |
| 40 | OpenFile |
獲取用于讀取文件的流。 |
| 41 | RemovedControl |
在從控件對象的控件集合中刪除子控件后調(diào)用。 |
| 42 | Render |
將控件呈現(xiàn)給指定的HTML編寫器。 |
| 43 | RenderBeginTag |
將控件的HTML開始標記呈現(xiàn)給指定的寫入器。 |
| 44 | RenderChildren |
將服務(wù)器控件的子項的內(nèi)容輸出到提供的HtmlTextWriter對象,該對象將要呈現(xiàn)的內(nèi)容寫入客戶端。 |
| 45 | RenderContents |
將控件的內(nèi)容呈現(xiàn)給指定的寫入器。 |
| 46 | RenderControl(HtmlTextWriter) |
將服務(wù)器控件內(nèi)容輸出到提供的HtmlTextWriter對象,并在啟用跟蹤時存儲有關(guān)該控件的跟蹤信息。 |
| 47 | RenderEndTag |
將控件的HTML結(jié)束標記呈現(xiàn)給指定的寫入器。 |
| 48 | ResolveAdapter |
獲取負責(zé)渲染指定控件的控件適配器。 |
| 49 | SaveControlState |
保存頁面發(fā)回服務(wù)器以來發(fā)生的所有服務(wù)器控件狀態(tài)更改。 |
| 50 | SaveViewState |
保存TrackViewState方法被調(diào)用后修改的任何狀態(tài)。 |
| 51 | SetDesignModeState |
為控件設(shè)置設(shè)計時數(shù)據(jù)。 |
| 52 | ToString |
返回表示當前對象的字符串。 |
| 53 | TrackViewState |
使控件跟蹤其視圖狀態(tài)的更改,以便它們可以存儲在對象的視圖狀態(tài)屬性中。 |
打開Visual Studio創(chuàng)建一個空的網(wǎng)站項目:ServerControls,如下所示 -

并在這個新的項目中,添加一個新的Web窗體文件 - Default.aspx。
下面來看看服務(wù)器控件 - 一個樹視圖控件。 樹視圖控件位于導(dǎo)航控件下。 其他導(dǎo)航控件是:菜單控件和SiteMapPath控件。
在頁面上添加一個樹視圖控件。 從任務(wù)中選擇編輯節(jié)點使用樹視圖節(jié)點編輯器編輯每個節(jié)點,如下所示:

當創(chuàng)建了節(jié)點,在設(shè)計視圖中看起來如下所示:

自動套用格式任務(wù)使用箭頭,如下所示格式化樹視圖:

在頁面上添加一個標簽控件和一個文本框控件,分別命名為lblmessage和txtmessage。
編寫幾行代碼,以確保選擇特定節(jié)點時,標簽控件顯示節(jié)點文本,文本框顯示其下的所有子節(jié)點(如果有的話)。 現(xiàn)在Default.aspx的代碼內(nèi)容如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>服務(wù)器控件示例</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TreeView ID="TreeView1" runat="server" ImageSet="Arrows" OnSelectedNodeChanged="TreeView1_SelectedNodeChanged1">
<HoverNodeStyle Font-Underline="True" ForeColor="#5555DD" />
<Nodes>
<asp:TreeNode Text="小牛技術(shù)有限公司" Value="小牛技術(shù)有限公司">
<asp:TreeNode Text="技術(shù)部" Value="技術(shù)部">
<asp:TreeNode Text="陳Java" Value="陳Java"></asp:TreeNode>
<asp:TreeNode Text="李PHP" Value="李PHP"></asp:TreeNode>
<asp:TreeNode Text="張MySQL" Value="張MySQL"></asp:TreeNode>
</asp:TreeNode>
<asp:TreeNode Text="市場部" Value="市場部">
<asp:TreeNode Text="李小雙" Value="李小雙"></asp:TreeNode>
<asp:TreeNode Text="羅十步" Value="羅十步"></asp:TreeNode>
<asp:TreeNode Text="渣渣輝" Value="渣渣輝"></asp:TreeNode>
</asp:TreeNode>
</asp:TreeNode>
</Nodes>
<NodeStyle Font-Names="Verdana" Font-Size="8pt" ForeColor="Black" HorizontalPadding="5px" NodeSpacing="0px" VerticalPadding="0px" />
<ParentNodeStyle Font-Bold="False" />
<SelectedNodeStyle Font-Underline="True" ForeColor="#5555DD" HorizontalPadding="0px" VerticalPadding="0px" />
</asp:TreeView>
<br />
<asp:Label ID="txtmessage" runat="server"></asp:Label>
<br />
<asp:Label ID="lblmessage" runat="server"></asp:Label>
</div>
</form>
</body>
</html>
Default.aspx.cs 的代碼內(nèi)容如下:
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;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
txtmessage.Text = "Page_Load ";
}
protected void TreeView1_SelectedNodeChanged1(object sender, EventArgs e)
{
txtmessage.Text = " ";
lblmessage.Text = "最近選擇: " + TreeView1.SelectedNode.Text;
TreeNodeCollection childnodes = TreeView1.SelectedNode.ChildNodes;
if (childnodes != null)
{
txtmessage.Text = " ";
foreach (TreeNode t in childnodes)
{
txtmessage.Text += ", "+t.Value;
}
}
}
}
執(zhí)行該頁面以查看效果。可以看到現(xiàn)在能夠展開和折疊節(jié)點。
