ASP.NET 伺服器控件概觀

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

原始產品版本: 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 應用程式時,具有 屬性的 HTML 伺服器控 runat=server 件會編譯成元件。
  • 大部分的控制項都包含 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 伺服器控制件

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

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

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

若要使用 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>

輸出如下所示:

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

豐富的控件

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

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

使用者控制件

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

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

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

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

自定義控制件

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

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

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