ASP.NET 服務器控件

2022-06-27 15:38 更新

服務器控件

控件是在圖形用戶界面中的小功能塊,其中包括文本框,按鈕,復選框,列表框,標簽,和許多其它工具。利用這些工具,用戶可以輸入數(shù)據(jù),進行選擇并注明自己的喜好。

控件也用于結(jié)構(gòu)性工作,如驗證,數(shù)據(jù)訪問,安全保證,創(chuàng)建母版頁和數(shù)據(jù)操作。

ASP.NET 使用五種類型的 Web 控件,它們是:

  • HTML 控件
  • HTML 服務器控件
  • ASP.NET 服務器控件
  • ASP.NET Ajax 服務器控件
  • 用戶控件和自定義控件

ASP.NET 服務器控件是在 ASP.NET 中使用的主要控件。這些控件可被分成以下幾類:

  • 驗證控件 - 用來驗證用戶輸入,并通過運行客戶端腳本進行工作。
  • 數(shù)據(jù)源控件 - 提供數(shù)據(jù)綁定到不同的數(shù)據(jù)源功能。
  • 數(shù)據(jù)視圖控件 - 該控件為各種列表和表格,可以顯示從數(shù)據(jù)源綁定的數(shù)據(jù)。
  • 個性化控件 - 根據(jù)用戶的喜好,基于用戶信息進行頁面?zhèn)€性化設置。
  • 登陸和安全控件 - 提供用戶身份驗證。
  • 母版頁 - 提供整個應用程序一致的布局和界面。
  • 導航控件 - 幫助用戶導航。例如,菜單,樹視圖等。
  • 豐富功能控件 - 實施特殊功能。例如:AdRotator, FileUpload, 和日歷控件。

使用服務器控件的基本語法是:

<asp:controlType  ID ="ControlID" runat="server" Property1=value1  [Property2=value2] />

此外,Visual Studio還具有以下特點,以幫助產(chǎn)生無差錯代碼:

  • 在設計視圖中拖動和丟棄控件。
  • 顯示及自動完成特性的智能感知功能。
  • 直接設置屬性值的屬性窗口。

服務器控件的屬性

具有可視化功能的 ASP.NET 服務器控件來源于 WebControl 類,并且繼承該類別的所有屬性,事件以及方法。

WebControl 類本身以及其他不具有可視化功能的服務器控件都來源于 System.Web.UI.Control 類。例如,PlaceHolder 控件或 XML 控件。

ASP.Net 服務器控件繼承了 WebControl 和 System.Web.UI.Control 類的所有屬性,事件,以及方法。

下表顯示了通用于所有服務器控件的屬性:

屬性描述
AccessKey同時按下該按鍵以及 Alt 鍵以將焦點移至控件。
Attributes它是不對應控件屬性的任意屬性(僅用于視圖呈現(xiàn))的集合。
BackColor背景色。
BindingContainer包含數(shù)據(jù)綁定的控件。
BorderColor邊框顏色。
BorderStyle邊框樣式。
BorderWidth邊框?qū)挾取?/td>
CausesValidation引起驗證時顯示。
ChildControlCreated表示服務器控件的子控件是否建立。
ClientIDHTML 標記的控件 ID。
Context與服務器控件關聯(lián)的 HttpContext 對象。
Controls控件內(nèi)全部控件的集合。
ControlStyleWeb 服務器控件的樣式。
CssClassCSS 類。
DataItemContainer若命名器執(zhí)行 IDataItemContainer,則為命名器提供參考。
DataKeysContainer若命名器執(zhí)行 IDataKeysControl,則為命名器提供參考。
DesignMode表示控件在設計界面是否被使用。
DisabledCssClass當控件禁用時,獲取或設置 CSS 類來應用呈現(xiàn)的 HTML 元素。
Enabled表示控件是否被禁用。
EnableTheming表示主題是否適用于控件。
EnableViewState表示是否維持控件的視圖狀態(tài)。
Events獲取代表控件的事件處理程序的列表。
Font字體設定。
Forecolor前景顏色。
HasAttributes表示控件是否具有屬性組。
HasChildViewState表示當前服務器控件的子控件是否具有任何已保存的視圖狀態(tài)設置。
Height高度的像素或百分比。
ID控件的標識符。
IsChildControlStateCleared表示包含在該控件內(nèi)部的控件是否具有控件狀態(tài)。
IsEnabled獲取表示控件是否被啟用的值。
IsTrackingViewState表示服務器控件是否會將更改保存到其視圖狀態(tài)。
IsViewStateEnabled表示視圖狀態(tài)是否對該控件啟用。
LoadViewStateById表示控件是否是由 ID 而非索引來參與加載其視圖狀態(tài)。
Page包含控件的頁面。
Parent家長控制功能。
RenderingCompatibility指定呈現(xiàn)的 HTML 將與之兼容的 ASP.NET 版本。
Site當設計界面顯示時容納當前控件的承載器。
SkinID獲取或設置適用于控件的皮膚。
Style獲取將在 Web 服務器控件的外部標簽作為樣式屬性顯示的文本屬性的集合。
TabIndex獲取或設置 Web 服務器控件的索引標簽。
TagKey獲取對應該 Web 服務器控件的 HtmlTextWriterTag 值。
TagName獲取控件標簽的名稱。
TemplateControl包含該控件的模板。
TemplateSourceDirectory獲取頁面的虛擬目錄或包含在該控件中的控件。
ToolTip獲取或設置當鼠標指針停在 Web 服務器控件時顯示的文本。
UniqueID唯一的標識符。
ViewState獲取能夠穿越同一頁面的多重請求后保存和恢復服務器控件視圖狀態(tài)的狀態(tài)信息詞典。
ViewStateIgnoreCase表示 StateBag 對象是否不區(qū)分大小寫。
ViewStateMode獲取或設置該控件的視圖狀態(tài)。
Visible表示服務器控件是否可見。
Width獲取或設置 Web 服務器控件的寬度。

服務器控件的方法

服務器控件的方法在以下表格中呈現(xiàn):

方法描述
AddAttributesToRender添加需要呈現(xiàn)指定 HtmlTextWriterTag 的 HTML 屬性和樣式。
AddedControl在子控件添加到控件對象的控件集合后調(diào)用。
AddParsedSubObject通報服務器控件一個元素,XML 或 HTML 已被解析,并將該元素添加到服務器控件的控件集合。
ApplyStyleSheetSkin將在頁面樣式表中定義的樣式屬性應用到控件中。
ClearCachedClientID基礎設施。設置緩存的 ClientID 值設置為 null。
ClearChildControlState為服務器控件的子控件刪除控件狀態(tài)信息。
ClearChildState為所有服務器控件的子控件刪除視圖狀態(tài)和控件狀態(tài)信息。
ClearChildViewState為所有服務器控件的子控件刪除視圖狀態(tài)信息。
CreateChildControls用于創(chuàng)建子控件。
CreateControlCollection創(chuàng)建一個用于保存子控件的新控件集合。
CreateControlStyle創(chuàng)建一個用于實現(xiàn)所有與樣式有關的屬性的樣式對象。
DataBind將數(shù)據(jù)源綁定到服務器控件及其所有子控件。
DataBind(Boolean)將數(shù)據(jù)源及可以引發(fā) DataBinding 事件的選項綁定到服務器控件及其所有子控件。
DataBindChildren將數(shù)據(jù)源綁定到服務器控件的子控件。
Dispose啟用一個服務器控件在其從內(nèi)存中釋放出來前去執(zhí)行最后的清理操作。
EnsureChildControls確定服務器控件是否包含子控件。若沒有,則創(chuàng)建子控件。
EnsureID為沒有標識符的控件創(chuàng)建一個標識符。
Equals(Object)確定指定對象是否等于當前對象。
Finalize允許一個對象去嘗試釋放資源并在對象被回收站回收前執(zhí)行其他清理操作。
FindControl(String)搜索當前命名容器中具有指定 id 參數(shù)的服務器控件。
FindControl(String, Int32)搜索當前命名容器中具有指定 id 參數(shù)和整數(shù)的服務器控件。
Focus為控件設置輸入焦點。
GetDesignModeState獲取控件的設計時數(shù)據(jù)。
GetType獲取當前實例的類型。
GetUniqueIDRelativeTo返回指定控件的唯一 ID 屬性的預固定部分。
HasControls確定服務器控件是否包含子控件。
HasEvents表示事件是否被控件或其他子控件注冊。
IsLiteralContent確定服務器控件是否僅含有文字內(nèi)容。
LoadControlState恢復控件狀態(tài)信息。
LoadViewState恢復視圖狀態(tài)信息。
MapPathSecure檢索絕對的或相對的虛擬路徑映射到的物理路徑。
MemberwiseClone創(chuàng)建當前對象的淺復制。
MergeStyle復制指定樣式的 Web 控件的任意非空白元素,但不覆蓋該控件現(xiàn)有的任何樣式元素。
OnBubbleEvent確定服務器控件的事件是否通過頁面的 UI 服務器控件層級。
OnDataBinding引發(fā)數(shù)據(jù)綁定事件。
OnInit引發(fā) Init 事件。
OnLoad引發(fā)加載事件。
OnPreRender引發(fā) PreRender 事件。
OnUnload引發(fā)卸載事件。
OpenFile獲取用于讀取文件的流。
RemovedControl在子控件從控件對象的控件集合中移除后調(diào)用。
Render顯示控件到指定的 HTML 作者。
RenderBeginTag顯示控件的 HTML 開口標簽到指定作者。
RenderChildren輸出服務器控件子級的內(nèi)容到提供的 HtmlTextWriter 對象中,從而編寫呈現(xiàn)在客戶端上的內(nèi)容。
RenderContents顯示控件內(nèi)容到指定作者。
RenderControl(HtmlTextWriter)輸出服務器控件內(nèi)容到提供的 HtmlTextWriter 對象并在啟用跟蹤的情況下保存關于控件的跟蹤信息。
RenderEndTag顯示控件的 HTML 結(jié)束標簽到指定作者。
ResolveAdapter獲取負責呈現(xiàn)指定控件的控件適配器。
SaveControlState保存自頁面回發(fā)到服務器后出現(xiàn)的服務器控件的狀態(tài)改變。
SaveViewState保存調(diào)用 TrackViewState 方法之后修改的任意狀態(tài)。
SetDesignModeState為控件設置設計時數(shù)據(jù)。
ToString返回代表當前對象的字符串。
TrackViewState引發(fā)控件跟蹤其視圖狀態(tài)的變化,使其可以存儲在該對象的視圖狀態(tài)屬性中。

實例

讓我們來看一看一個特定的服務器控件 - 樹型視圖控件。樹視圖控件屬于導航控件。其他導航控件是:菜單控件和 SiteMapPath 控件。

在頁面上添加樹視圖控件。從任務中選擇編輯結(jié)點...使用樹視圖結(jié)點編輯器編輯每個結(jié)點,如下所示:

image

當成功創(chuàng)建結(jié)點之后,設計視圖下會有如下顯示:

image

AutoFormat... 任務允許您規(guī)定樹視圖的格式,如下所示:

image

在頁面上添加一個標簽控件和文本框控件并分別命名為 lblmessage 和 txtmessage。

寫幾行代碼,以確保當一個特定結(jié)點被選中時,標簽控件顯示結(jié)點文字且文本框顯示所有其下的子結(jié)點(如有)。后臺文件的代碼應如下所示:

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í)行頁面以觀看效果,您將可以展開和折疊結(jié)點。

image

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號