ASP.NET 服務(wù)器控件

2022-06-27 15:38 更新

服務(wù)器控件

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

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

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

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

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

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

使用服務(wù)器控件的基本語法是:

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

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

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

服務(wù)器控件的屬性

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

WebControl 類本身以及其他不具有可視化功能的服務(wù)器控件都來源于 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ù)器控件的子控件是否建立。
ClientIDHTML 標(biāo)記的控件 ID。
Context與服務(wù)器控件關(guān)聯(lián)的 HttpContext 對(duì)象。
Controls控件內(nèi)全部控件的集合。
ControlStyleWeb 服務(wù)器控件的樣式。
CssClassCSS 類。
DataItemContainer若命名器執(zhí)行 IDataItemContainer,則為命名器提供參考。
DataKeysContainer若命名器執(zhí)行 IDataKeysControl,則為命名器提供參考。
DesignMode表示控件在設(shè)計(jì)界面是否被使用。
DisabledCssClass當(dāng)控件禁用時(shí),獲取或設(shè)置 CSS 類來應(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 而非索引來參與加載其視圖狀態(tài)。
Page包含控件的頁面。
Parent家長控制功能。
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獲取頁面的虛擬目錄或包含在該控件中的控件。
ToolTip獲取或設(shè)置當(dāng)鼠標(biāo)指針停在 Web 服務(wù)器控件時(shí)顯示的文本。
UniqueID唯一的標(biāo)識(shí)符。
ViewState獲取能夠穿越同一頁面的多重請(qǐng)求后保存和恢復(fù)服務(wù)器控件視圖狀態(tài)的狀態(tài)信息詞典。
ViewStateIgnoreCase表示 StateBag 對(duì)象是否不區(qū)分大小寫。
ViewStateMode獲取或設(shè)置該控件的視圖狀態(tài)。
Visible表示服務(wù)器控件是否可見。
Width獲取或設(shè)置 Web 服務(wù)器控件的寬度。

服務(wù)器控件的方法

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

方法描述
AddAttributesToRender添加需要呈現(xiàn)指定 HtmlTextWriterTag 的 HTML 屬性和樣式。
AddedControl在子控件添加到控件對(duì)象的控件集合后調(diào)用。
AddParsedSubObject通報(bào)服務(wù)器控件一個(gè)元素,XML 或 HTML 已被解析,并將該元素添加到服務(wù)器控件的控件集合。
ApplyStyleSheetSkin將在頁面樣式表中定義的樣式屬性應(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)存中釋放出來前去執(zhí)行最后的清理操作。
EnsureChildControls確定服務(wù)器控件是否包含子控件。若沒有,則創(chuàng)建子控件。
EnsureID為沒有標(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ù)器控件的事件是否通過頁面的 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 開口標(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保存自頁面回發(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)屬性中。

實(shí)例

讓我們來看一看一個(gè)特定的服務(wù)器控件 - 樹型視圖控件。樹視圖控件屬于導(dǎo)航控件。其他導(dǎo)航控件是:菜單控件和 SiteMapPath 控件。

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

image

當(dāng)成功創(chuàng)建結(jié)點(diǎn)之后,設(shè)計(jì)視圖下會(huì)有如下顯示:

image

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

image

在頁面上添加一個(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í)行頁面以觀看效果,您將可以展開和折疊結(jié)點(diǎn)。

image

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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)