共用方式為


HOW TO:以程式設計方式建立 ASP.NET 使用者控制項的執行個體

更新:2007 年 11 月

就像是您可以使用程式設計方式,在 ASP.NET 網頁上建立任何伺服器控制項的執行個體,您也可以藉由使用者控制項達到相同目的。

若要以程式設計方式建立使用者控制項的執行個體

  1. 在使用者控制項中,請確認 @ Control 指示詞包含將類別指派給使用者控制項的 ClassName 屬性。

    下列程式碼範例會設定 ClassName 屬性以強型別使用者控制項。

    <%@ Control className="MyUserControl" %>
    
  2. 在想要使用使用者控制項的網頁上,藉由 @ Reference 指示詞建立使用者控制項的參考。

    以程式設計方式建立使用者控制項時,只有在您建立使用者控制項的強型別參考後,ASP.NET Web 網頁才能使用它。例如,下列程式碼會建立 MyUserControl.ascx 檔中所建立的使用者控制項參考。

    <%@ Reference Control="MyUserControl.ascx" %>
    
    注意事項:

    當您想要以程式設計方式載入控制項時,可以使用 @ Reference。當您以宣告方式將使用者控制項加入網頁時,可以使用 @ Register 指示詞。如需詳細資訊,請參閱 HOW TO:在 ASP.NET Web 網頁中包含使用者控制項

  3. 使用控制項的類別名稱,建立使用者控制項的執行個體變數。類別會是 ASP 命名空間的一部分。

    例如,如果您想要建立宣告為類別 Spinner 的使用者控制項執行個體,可以使用如下列的語法:

    Protected Spinner1 As ASP.Spinner
    
    Protected ASP.Spinner Spinner1;
    
  4. 藉由呼叫 LoadControl 方法在程式碼中建立使用者控制項的執行個體。

  5. 視需要指派屬性值,然後將控制項加入網頁上容器的 ControlCollection 集合,例如 PlaceHolder 控制項。

    注意事項:

    當您使用 Add 方法將控制項加入 ControlCollection 物件時,它們會依照被處理的順序放在集合中。如果您想要將控制項加入集合中的特定位置,請使用 AddAt 方法,並指定想要儲存控制項的索引位置。

範例

下列程式碼範例,示範了以程式設計方式載入使用者控制項的 ASP.NET Web 網頁。網頁包含 @ Reference 指示詞以指定控制項的檔案。LoadControl 方法會讀取檔案,然後將其具體化為能夠加入網頁的控制項。

<%@ Page Language="VB" %>
<%@ Reference Control="~\Controls\Spinner.ascx" %>

<script >
Private Spinner1 As ASP.Spinner
Protected Sub Page_Load(ByVal sender As Object, _
        ByVal e As System.EventArgs)
    Spinner1 = CType(LoadControl("~\Controls\Spinner.ascx"), _
        ASP.Spinner)
    ' Set MaxValue first.
    Spinner1.MaxValue = 20
    Spinner1.MinValue = 10
    PlaceHolder1.Controls.Add(Spinner1)
End Sub

Protected Sub Button1_Click(ByVal sender As Object, _
      ByVal e As System.EventArgs)
    Label1.Text = Spinner1.CurrentNumber.ToString()
End Sub
</script>
<html>
<head id="Head1" >
  <title>Load User Control Programmatically</title>
</head>
<body>
  <form id="form1" >
    <div>
      <asp:PlaceHolder runat=server ID="PlaceHolder1" />
      <br />
      <asp:Button ID="Button1"  
        Text="Button" 
        OnClick="Button1_Click" />
      <br />
      <br />
      <asp:Label ID="Label1"  Text=""></asp:Label>
    </div>
  </form>
</body>
</html>
<%@ Page Language="C#" %>
<%@ Reference Control="~/Controls/Spinner.ascx" %>
<script >
private ASP.Spinner Spinner1;
protected void Page_Load(object sender, EventArgs e)
{
    Spinner1 = (ASP.Spinner)LoadControl("~/Controls/Spinner.ascx");
     // Set MaxValue first.
    Spinner1.MaxValue = 20;
    Spinner1.MinValue = 10;
    PlaceHolder1.Controls.Add(Spinner1);
}

protected void Button1_Click(object sender, EventArgs e)
{
    Label1.Text = Spinner1.CurrentNumber.ToString();
}
</script>

<html>
<head id="Head1" >
  <title>Load User Control Programmatically</title>
</head>
<body>
  <form id="form1" >
    <div>
      <asp:PlaceHolder runat=server ID="PlaceHolder1" />
      <br />
      <asp:Button ID="Button1"  
        Text="Button" 
        OnClick="Button1_Click" />
      <br />
      <br />
      <asp:Label ID="Label1"  Text=""></asp:Label>
    </div>
  </form>
</body>
</html>

請參閱

概念

ASP.NET 使用者控制項概觀