建立使用者控制項

您可以使用文字或 HTML 編輯器,宣告性建立使用者控制項。使用者控制項宣告式語法非常類似建立 Web Form 網頁所使用的語法。主要的差異在於,使用者控制項會在 @ Page 指示詞的位置使用 @ Control 指示詞,而且使用者控制項不包含內容前後的 <html><body><form> 項目。

如需 Web Form 網頁和如何建立它們的詳細資訊,請參閱 Web Form 網頁的簡介。如需在 Web Form 網頁中宣告使用者控制項的詳細資訊,請參閱在 Web Form 網頁中包含使用者控制項

使用者控制項可以像文字檔一樣簡單,或者也可以包含其他 ASP.NET 伺服器控制項。如果您想要在使用者控制項和裝載它的網頁之間共用資訊,您可以對使用者控制項建立某些屬性。

下列程序簡述在應用程式的多個網頁上可加入的簡單登入表單。

建立使用者控制項

  1. 建立一個新檔案,命名時以 .ascx 為副檔名。

    例如,將您的控制項命名為 Logonform.ascx

  2. 在網頁的頂端建立一個 @ Control 指示詞,並且指定這個控制項要使用的程式語言 (如果需要的話)。

    下列範例的 @ Control 指示詞是表示使用 Visual Basic .NET 作為網頁的程式語言。

    <%@ Control Language="VB" %>
    

    **注意   **在您使用 Visual Studio .NET 建立 Web 應用程式時,應用程式的所有網頁和使用者控制項必須是以相同的程式語言設計的。

  3. 建立您希望使用者控制項顯示的任何使用者介面項目 (控制項)。

  4. 如果您想要在使用者控制項和裝載它的網頁之間共用資訊,請在這個控制項中建立屬性。

    下列範例示範了一個完整的使用者控制項,它會顯示一個讓使用者輸入名稱的文字方塊,和一個用來顯示這個名稱的標籤。這個使用者控制項也會公開 Name 屬性,讓這個名稱能夠在裝載它的網頁中設定。

    <%@ Control Language="VB" %>
    <script runat="server">
    Public Property Name As String
       Get
           Return labelOutput.Text
       End Get
       Set
           textName.Text = Server.HtmlEncode(value)
           labelOutput.Text = Server.HtmlEncode(value)
       End Set
    End Property
    
    Public Sub buttonDisplayName_Click(sender As Object, e As EventArgs)
       labelOutput.Text = textName.Text
    End Sub
    </script>
    
    <table>
        <tbody>
            <tr>
                <td>
                    <b>Enter your name:</b></td>
            </tr>
            <tr>
                <td>
                    <asp:TextBox id="textName" 
                        runat="server">
                    </asp:TextBox>
                </td>
            </tr>
            <tr>
                <td>
                    <asp:button id="buttonDisplayName" 
                       onclick="buttonDisplayName_Click" 
                       runat="server" text="Submit">
                    </asp:button>
                </td>
            </tr>
            <tr>
                <td><b>Hello, 
                     <asp:Label id="labelOutput" 
                         runat="server">
                     </asp:Label>.</b>
                </td>
            </tr>
        </tbody>
    </table>
    
    [C#]
    <%@ Control Language="C#" %>
    <script runat="server">
        public String Name {
            get
            {
                return labelOutput.Text;
            }
            set
            {
                textName.Text = Server.HtmlEncode(value);
                labelOutput.Text = Server.HtmlEncode(value);
            }
        }
    
        void buttonDisplayName_Click(object sender, EventArgs e) {
           labelOutput.Text = textName.Text;
        }
    </script>
    
    <table>
        <tbody>
            <tr>
                <td>
                    <b>Enter your name:</b></td>
            </tr>
            <tr>
                <td>
                    <asp:TextBox id="textName" 
                        runat="server">
                    </asp:TextBox>
                </td>
            </tr>
            <tr>
                <td>
                    <asp:button id="buttonDisplayName" 
                       onclick="buttonDisplayName_Click" 
                       runat="server" text="Submit">
                    </asp:button>
                </td>
            </tr>
            <tr>
                <td><b>Hello, 
                     <asp:Label id="labelOutput" 
                         runat="server">
                     </asp:Label>.</b>
                </td>
            </tr>
        </tbody>
    </table>
    
    

如需在 ASP.NET Web 網頁加入使用者控制項的詳細資訊,請參閱在 Web Form 網頁中包含使用者控制項

請參閱

Web Form 使用者控制項 | 在 Web Form 網頁中包含使用者控制項 | Web Form 網頁中的伺服器事件處理