- ASP.NET 教程
- ASP.NET - 首頁
- ASP.NET - 簡介
- ASP.NET - 環境
- ASP.NET - 生命週期
- ASP.NET - 第一個示例
- ASP.NET - 事件處理
- ASP.NET - 伺服器端
- ASP.NET - 伺服器控制元件
- ASP.NET - HTML 伺服器控制元件
- ASP.NET - 客戶端
- ASP.NET - 基本控制元件
- ASP.NET - 指令
- ASP.NET - 狀態管理
- ASP.NET - 驗證器
- ASP.NET - 資料庫訪問
- ASP.NET - ADO.net
- ASP.NET - 檔案上傳
- ASP.NET - 廣告輪播
- ASP.NET - 日曆控制元件
- ASP.NET - 多檢視
- ASP.NET - 面板控制元件
- ASP.NET - AJAX 控制元件
- ASP.NET - 資料來源
- ASP.NET - 資料繫結
- ASP.NET - 自定義控制元件
- ASP.NET - 個性化
- ASP.NET - 錯誤處理
- ASP.NET - 除錯
- ASP.NET - LINQ
- ASP.NET - 安全性
- ASP.NET - 資料快取
- ASP.NET - Web 服務
- ASP.NET - 多執行緒
- ASP.NET - 配置
- ASP.NET - 部署
- ASP.NET 資源
- ASP.NET - 快速指南
- ASP.NET - 有用資源
- ASP.NET - 討論
ASP.NET - 伺服器控制元件
控制元件是圖形使用者介面的小型構建塊,包括文字框、按鈕、複選框、列表框、標籤以及眾多其他工具。使用者可以使用這些工具輸入資料、進行選擇並指示其偏好。
控制元件還用於結構性工作,例如驗證、資料訪問、安全性、建立母版頁以及資料操作。
ASP.NET 使用五種型別的 Web 控制元件,它們是
- HTML 控制元件
- HTML 伺服器控制元件
- ASP.NET 伺服器控制元件
- ASP.NET Ajax 伺服器控制元件
- 使用者控制元件和自定義控制元件
ASP.NET 伺服器控制元件是 ASP.NET 中使用的主要控制元件。這些控制元件可以分為以下幾類
驗證控制元件 - 用於驗證使用者輸入,它們透過執行客戶端指令碼工作。
資料來源控制元件 - 這些控制元件提供與不同資料來源的資料繫結。
資料檢視控制元件 - 這些是各種列表和表格,可以繫結到資料來源中的資料以進行顯示。
個性化控制元件 - 用於根據使用者的資訊,根據使用者偏好個性化頁面。
登入和安全控制元件 - 這些控制元件提供使用者身份驗證。
母版頁 - 這些控制元件在整個應用程式中提供一致的佈局和介面。
導航控制元件 - 這些控制元件有助於導航。例如,選單、樹檢視等。
富控制元件 - 這些控制元件實現特殊功能。例如,AdRotator、FileUpload 和 Calendar 控制元件。
使用伺服器控制元件的語法為
<asp:controlType ID ="ControlID" runat="server" Property1=value1 [Property2=value2] />
此外,Visual Studio 具有以下功能,有助於生成無錯誤的程式碼
- 在設計檢視中拖放控制元件
- IntelliSense 功能,顯示並自動完成屬性
- 屬性視窗,直接設定屬性值
伺服器控制元件的屬性
具有視覺外觀的 ASP.NET 伺服器控制元件派生自 WebControl 類,並繼承此類所有屬性、事件和方法。
WebControl 類本身以及一些未進行視覺呈現的其他伺服器控制元件派生自 System.Web.UI.Control 類。例如,PlaceHolder 控制元件或 XML 控制元件。
ASP.Net 伺服器控制元件繼承 WebControl 和 System.Web.UI.Control 類的所有屬性、事件和方法。
下表顯示了所有伺服器控制元件共有的繼承屬性
| 屬性 | 描述 |
|---|---|
| AccessKey | 按此鍵與 Alt 鍵一起使用,將焦點移動到控制元件。 |
| Attributes | 它是任意屬性的集合(僅用於呈現),與控制元件上的屬性不對應。 |
| BackColor | 背景顏色。 |
| BindingContainer | 包含此控制元件資料繫結的控制元件。 |
| BorderColor | 邊框顏色。 |
| BorderStyle | 邊框樣式。 |
| BorderWidth | 邊框寬度。 |
| CausesValidation | 指示它是否導致驗證。 |
| ChildControlCreated | 它指示伺服器控制元件的子控制元件是否已建立。 |
| ClientID | HTML 標記的控制元件 ID。 |
| Context | 與伺服器控制元件關聯的 HttpContext 物件。 |
| Controls | 控制元件中包含的所有控制元件的集合。 |
| ControlStyle | Web 伺服器控制元件的樣式。 |
| CssClass | CSS 類 |
| DataItemContainer | 如果命名容器實現 IDataItemContainer,則獲取對命名容器的引用。 |
| DataKeysContainer | 如果命名容器實現 IDataKeysControl,則獲取對命名容器的引用。 |
| DesignMode | 它指示控制元件是否正在設計圖面上使用。 |
| DisabledCssClass | 獲取或設定當控制元件停用時應用於渲染的 HTML 元素的 CSS 類。 |
| Enabled | 指示控制元件是否呈灰色顯示。 |
| EnableTheming | 指示主題是否應用於控制元件。 |
| EnableViewState | 指示是否維護控制元件的檢視狀態。 |
| Events | 獲取控制元件的事件處理程式委託列表。 |
| Font | 字型。 |
| Forecolor | 前景色。 |
| HasAttributes | 指示控制元件是否設定了屬性。 |
| HasChildViewState | 指示當前伺服器控制元件的子控制元件是否具有任何儲存的檢視狀態設定。 |
| Height | 以畫素或 % 為單位的高度。 |
| ID | 控制元件的識別符號。 |
| IsChildControlStateCleared | 指示此控制元件中包含的控制元件是否具有控制元件狀態。 |
| IsEnabled | 獲取一個值,該值指示控制元件是否已啟用。 |
| IsTrackingViewState | 它指示伺服器控制元件是否正在儲存對其檢視狀態的更改。 |
| IsViewStateEnabled | 它指示此控制元件是否啟用了檢視狀態。 |
| LoadViewStateById | 它指示控制元件是否透過 ID 而不是索引參與載入其檢視狀態。 |
| Page | 包含控制元件的頁面。 |
| Parent | 父控制元件。 |
| RenderingCompatibility | 它指定渲染的 HTML 將與其相容的 ASP.NET 版本。 |
| Site | 在設計圖面上呈現時承載當前控制元件的容器。 |
| SkinID | 獲取或設定要應用於控制元件的皮膚。 |
| Style | 獲取將作為 Web 伺服器控制元件外部標記上的樣式屬性呈現的文字屬性集合。 |
| TabIndex | 獲取或設定 Web 伺服器控制元件的 Tab 索引。 |
| TagKey | 獲取與該 Web 伺服器控制元件對應的 HtmlTextWriterTag 值。 |
| TagName | 獲取控制元件標記的名稱。 |
| TemplateControl | 包含此控制元件的模板。 |
| TemplateSourceDirectory | 獲取包含此控制元件的頁面或控制元件的虛擬目錄。 |
| ToolTip | 獲取或設定滑鼠指標懸停在 Web 伺服器控制元件上時顯示的文字。 |
| UniqueID | 唯一識別符號。 |
| ViewState | 獲取狀態資訊的字典,該字典在同一頁面的多個請求中儲存和還原伺服器控制元件的檢視狀態。 |
| ViewStateIgnoreCase | 它指示 StateBag 物件是否不區分大小寫。 |
| ViewStateMode | 獲取或設定此控制元件的檢視狀態模式。 |
| Visible | 它指示伺服器控制元件是否可見。 |
| Width | 獲取或設定 Web 伺服器控制元件的寬度。 |
伺服器控制元件的方法
下表提供了伺服器控制元件的方法
| 方法 | 描述 |
|---|---|
| AddAttributesToRender | 新增需要呈現到指定的 HtmlTextWriterTag 的 HTML 屬性和樣式。 |
| AddedControl | 在將子控制元件新增到控制元件物件的 Controls 集合後呼叫。 |
| AddParsedSubObject | 通知伺服器控制元件已解析元素(XML 或 HTML),並將元素新增到伺服器控制元件的控制元件集合。 |
| ApplyStyleSheetSkin | 將頁面樣式表中定義的樣式屬性應用於控制元件。 |
| ClearCachedClientID | 基礎結構。將快取的 ClientID 值設定為 null。 |
| ClearChildControlState | 刪除伺服器控制元件的子控制元件的控制元件狀態資訊。 |
| ClearChildState | 刪除所有伺服器控制元件的子控制元件的檢視狀態和控制元件狀態資訊。 |
| ClearChildViewState | 刪除所有伺服器控制元件的子控制元件的檢視狀態資訊。 |
| CreateChildControls | 用於建立子控制元件。 |
| CreateControlCollection | 建立一個新的 ControlCollection 物件來儲存子控制元件。 |
| CreateControlStyle | 建立用於實現所有樣式相關屬性的樣式物件。 |
| DataBind | 將資料來源繫結到伺服器控制元件及其所有子控制元件。 |
| DataBind(Boolean) | 將資料來源繫結到伺服器控制元件及其所有子控制元件,並可以選擇引發 DataBinding 事件。 |
| DataBindChildren | 將資料來源繫結到伺服器控制元件的子控制元件。 |
| Dispose | 使伺服器控制元件能夠在從記憶體中釋放之前執行最終清理操作。 |
| EnsureChildControls | 確定伺服器控制元件是否包含子控制元件。如果否,則建立子控制元件。 |
| EnsureID | 為沒有識別符號的控制元件建立識別符號。 |
| Equals(Object) | 確定指定的物件是否等於當前物件。 |
| Finalize | 允許物件嘗試釋放資源並在物件被垃圾回收之前執行其他清理操作。 |
| FindControl(String) | 在當前命名容器中搜索具有指定 id 引數的伺服器控制元件。 |
| FindControl(String, Int32) | 在當前命名容器中搜索具有指定 id 和整數的伺服器控制元件。 |
| Focus | 將輸入焦點設定為控制元件。 |
| GetDesignModeState | 獲取控制元件的設計時資料。 |
| GetType | 獲取當前例項的型別。 |
| GetUniqueIDRelativeTo | 返回指定控制元件的 UniqueID 屬性的字首部分。 |
| HasControls | 確定伺服器控制元件是否包含任何子控制元件。 |
| HasEvents | 指示控制元件或任何子控制元件是否註冊了事件。 |
| IsLiteralContent | 確定伺服器控制元件是否僅儲存文字內容。 |
| LoadControlState | 還原控制元件狀態資訊。 |
| LoadViewState | 恢復檢視狀態資訊。 |
| MapPathSecure | 檢索虛擬路徑(絕對或相對)對映到的物理路徑。 |
| MemberwiseClone | 建立當前物件的淺複製。 |
| MergeStyle | 將指定樣式中任何非空白元素複製到 Web 控制元件,但不覆蓋控制元件的任何現有樣式元素。 |
| OnBubbleEvent | 確定伺服器控制元件的事件是否向上傳遞到頁面的 UI 伺服器控制元件層次結構。 |
| OnDataBinding | 引發資料繫結事件。 |
| OnInit | 引發 Init 事件。 |
| OnLoad | 引發 Load 事件。 |
| OnPreRender | 引發 PreRender 事件。 |
| OnUnload | 引發 Unload 事件。 |
| OpenFile | 獲取用於讀取檔案的 Stream。 |
| RemovedControl | 在子控制元件從控制元件物件的控制元件集合中移除後呼叫。 |
| Render | 將控制元件呈現到指定的 HTML 編寫器。 |
| RenderBeginTag | 將控制元件的 HTML 開啟標籤呈現到指定的編寫器。 |
| RenderChildren | 將伺服器控制元件子元素的內容輸出到提供的 HtmlTextWriter 物件,該物件寫入要在客戶端呈現的內容。 |
| RenderContents | 將控制元件的內容呈現到指定的編寫器。 |
| RenderControl(HtmlTextWriter) | 將伺服器控制元件內容輸出到提供的 HtmlTextWriter 物件,並在啟用跟蹤時儲存有關控制元件的跟蹤資訊。 |
| RenderEndTag | 將控制元件的 HTML 關閉標籤呈現到指定的編寫器。 |
| ResolveAdapter | 獲取負責呈現指定控制元件的控制元件介面卡。 |
| SaveControlState | 儲存自頁面回發到伺服器以來發生的任何伺服器控制元件狀態更改。 |
| SaveViewState | 儲存 TrackViewState 方法呼叫後修改的任何狀態。 |
| SetDesignModeState | 設定控制元件的設計時資料。 |
| ToString | 返回表示當前物件的字串。 |
| TrackViewState | 使控制元件跟蹤對其檢視狀態的更改,以便可以將其儲存在物件的檢視狀態屬性中。 |
示例
讓我們來看一個特定的伺服器控制元件 - 樹形檢視控制元件。樹形檢視控制元件屬於導航控制元件。其他導航控制元件包括:選單控制元件和站點地圖路徑控制元件。
在頁面上新增一個樹形檢視控制元件。從任務中選擇“編輯節點…”。使用樹形檢視節點編輯器編輯每個節點,如所示
建立節點後,在設計檢視中看起來如下所示
“自動格式化…”任務允許您格式化樹形檢視,如所示
在頁面上新增一個標籤控制元件和一個文字框控制元件,並分別將其命名為 lblmessage 和 txtmessage。
編寫幾行程式碼以確保當選擇特定節點時,標籤控制元件顯示節點文字,而文字框顯示其下所有子節點(如果有)。檔案後面的程式碼應如下所示
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;
}
}
}
}
}
執行頁面以檢視效果。您將能夠展開和摺疊節點。