ASP.NET 伺服器控件概觀

本文介紹 ASP.NET 伺服器控制件,例如 HTML 伺服器控制件、網頁伺服器控制件、清單控制件等。

原始產品版本: ASP.NET
原始 KB 編號: 306459

本文參考下列Microsoft .NET Framework 類別庫命名空間:

  • System.Web.UI.HtmlControls.HtmlControl
  • System.Web.UI.WebControls.WebControl

ASP.NET 網頁架構中的伺服器控制件

ASP.NET 頁面架構包含一些內建伺服器控制件,其設計目的是為 Web 提供更結構化的程式設計模型。 這些控制項提供下列功能:

  • 自動狀態管理。
  • 簡單存取物件值,而不需要使用 Request 物件。
  • 能夠回應伺服器端程序代碼中的事件,以建立結構較佳的應用程式。
  • 建置網頁用戶介面的常見方法。
  • 輸出會根據瀏覽器的功能自動自定義。

除了內建控件之外,ASP.NET 頁面架構也提供建立使用者控件和自定義控件的功能。 使用者控制項和自定義控制項可以增強和擴充現有的控制件,以建置更豐富的使用者介面。

HTML 伺服器控制件

HTML 伺服器控制件是包含屬性的 runat=server HTML 元素。 HTML 伺服器控制件的 HTML 輸出與對應的 HTML 標籤具有相同的屬性。 此外,HTML 伺服器控制項也提供自動狀態管理和伺服器端事件。 HTML 伺服器控制項提供下列優點:

  • HTML 伺服器控制項會使用對應的 HTML 標籤,將一個對應至一個。
  • 編譯 ASP.NET 應用程式時,具有 屬性的 runat=server HTML 伺服器控件會編譯成元件。
  • 大部分的控制項都包含 OnServerEvent 控制項最常使用事件的 。 例如, <input type=button> 控件具有 OnServerClick 事件。
  • 未實作為特定 HTML 伺服器控制件的 HTML 標記仍可在伺服器端使用;不過,它們會新增至元件作為 HtmlGenericControl
  • 重新發佈 ASP.NET 頁面時,HTML 伺服器控制件會保留其值。

System.Web.UI.HtmlControls.HtmlControl 類包含所有通用屬性。 HTML 伺服器控件衍生自這個類別。

若要使用 HTML 伺服器控制件,請使用下列語法(使用 HtmlInputText 控制項作為範例):

<input type="text" value="hello world" runat=server />

如需 ASP.NET 中可用之個別 HTML 伺服器控制件的詳細資訊,請參閱下列網站:

網頁伺服器控制件

Web 控件類似於 HTML 伺服器控制件,例如 Button、TextBox 和 Hyperlink,不同之處在於 Web 控制件具有一組標準化的屬性名稱。 Web 伺服器控制項提供下列優點:

  • 讓製造商和開發人員更輕鬆地建置可自動產生使用者介面的工具或應用程式。
  • 簡化建立互動式 Web 窗體的程式,這需要不太瞭解 HTML 控件的運作方式,並讓使用它們的工作較不容易出錯。

System.Web.UI.WebControls.WebControl 類包含所有通用屬性。 大部分的 Web 伺服器控制件都衍生自這個類別。

若要使用網頁伺服器控制件,請使用下列語法(使用 TextBox 控制件作為範例):

<asp:textbox text="hello world" runat=server />

Web 伺服器控制項可以分成四個類別:

  • 基本 Web 控制件
  • 驗證控制件
  • 列出控件
  • 豐富控件

基本 Web 控制件

基本 Web 控制項提供與其 HTML 伺服器控制項對應專案相同的功能。 不過,基本 Web 控制件包含其他方法、事件和屬性,您可以針對它們進行程序設計。

如需 ASP.NET 中可用的個別 Web 控件詳細資訊,請參閱下列網站:

驗證控制件

驗證控件可用來驗證輸入至頁面其他控制件的值。 驗證控制項會根據頁面顯示所在的瀏覽器功能,執行客戶端驗證、伺服器端驗證或兩者。 驗證控制項提供下列優點:

  • 您可以將一或多個驗證控制件與您要驗證的每個控制件產生關聯。
  • 提交頁面表單時,會執行驗證。
  • 您可以以程式設計方式指定是否應該進行驗證,如果您想要提供取消按鈕,讓使用者可以結束,而不需要在所有欄位中填入有效的數據,這非常有用。
  • 驗證控制件會自動偵測應該在用戶端或伺服器端執行驗證。

注意

客戶端驗證會在回傳作業完成之前攔截錯誤。 因此,如果您在單一頁面上有用戶端和伺服器端驗證控件的組合,則如果客戶端驗證失敗,則會先佔伺服器端驗證。如需 ASP.NET 中可用之個別驗證控件的詳細資訊,請參閱下列網站:

清單控制件

清單控制項是支援系結至集合的特殊 Web 伺服器控制件。 您可以使用清單控制件,以自訂的範本格式顯示資料列。 所有清單控件都會公開 DataSource 和 DataMember 屬性,這些屬性是用來系結至集合。

清單控件只能系結至支援 IEnumerable、ICollection 或 IListSource 介面的集合。 例如,Visual C# .NET 範例頁面隨即出現,如下所示:

<%@ Page Language="C#" %>
<script runat="server">
    Public void Page_Load()
    {
        String[] myStringArray = new String[] {"one","two","three"};
        rptr.DataSource = myStringArray;
        rptr.DataBind();
    }
</script>
<html>
    <body>
        <asp:repeater id=rptr runat="server">
            <itemtemplate><%# Container.DataItem %><br></itemtemplate>
        </asp:repeater>
    </body>
</html>

Visual Basic .NET 範例頁面隨即出現,如下所示:

<%@ Page Language="vb" %>
<script runat="server">
    public sub Page_Load()
        Dim myStringArray as String()
        myStringArray = new String() {"one","two","three"}
        rptr.DataSource = myStringArray
        rptr.DataBind()
    end sub
</script>
<html>
    <body>
        <asp:repeater id=rptr runat="server">
            <itemtemplate><%# Container.DataItem %><br></itemtemplate>
        </asp:repeater>
    </body>
</html>

輸出看起來會像下面這樣:

  • 一個
  • two
  • 3

如需 ASP.NET 中可用之個別清單控制件的詳細資訊,請參閱下列網站:

豐富的控件

除了上述控件之外,ASP.NET 頁面架構還提供一些稱為豐富控件的工作特定控件。 豐富的控件是使用多個 HTML 元素所建置,並包含豐富的功能。 豐富的控件範例包括行事歷控件和 AdRotator 控件。

如需 ASP.NET 中可用之個別豐富控件的詳細資訊,請參閱下列網站:

使用者控制項

通常,您可能想要重複使用 Web 窗體的使用者介面,而不需要撰寫任何額外的程式代碼。 ASP.NET 可讓您將 Web Form 轉換成使用者控件來執行這項操作。 具有 .ascx 擴展名的使用者控件可以在單一 Web Form 內多次使用。

若要將 Web 窗體轉換成使用者控制項,請遵循下列步驟:

  1. 拿掉所有 <html><head><body><form> 標記。
  2. 如果指示 @ Page 詞出現在頁面中,請將它變更為 @ Control
  3. className@ Control 指示詞中包含 屬性,以便在具現化使用者控件時,以強式輸入。
  4. 為控件提供描述性的檔名,並將擴展名從 .aspx 變更為 .ascx。

如需使用者控件的詳細資訊,請參閱 Web Form 使用者控件

自訂控制項

除了內建的 Web 控制件之外,ASP.NET 也可讓您建立自己的自定義控件。 如果您遇到下列其中一個案例,開發自定義控制項可能會很有用:

  • 您需要結合兩個或多個內建 Web 控制項的功能。
  • 您需要擴充內建控件的功能。
  • 您需要與目前任何控制件不同的控制件。

如需開發自定義控件的詳細資訊,請參閱下列主題: