Condividi tramite


Procedura: creare istanze di controlli utente ASP.NET a livello di programmazione

Aggiornamento: novembre 2007

In una pagina Web, è possibile creare un'istanza di tutti i controlli server ASP.NET a livello di programmazione. La stessa operazione può essere eseguita con i controlli utente.

Per creare un'istanza di un controllo utente a livello di programmazione

  1. Nel controllo utente, assicurarsi che la direttiva @ Control contenga un attributo ClassName che assegna una classe al controllo utente.

    Nell'esempio seguente, viene impostato l'attributo ClassName per tipizzare fortemente un controllo utente.

    <%@ Control className="MyUserControl" %>
    
  2. Nella pagina in cui si desidera utilizzare il controllo utente, creare un riferimento al controllo utente con la direttiva @ Reference.

    Creando un controllo utente a livello di programmazione, il controllo fortemente tipizzato diventa disponibile per la pagina Web ASP.NET solo dopo averne creato un riferimento. Ad esempio, il codice seguente crea un riferimento per un controllo utente generato con il file MyUserControl.ascx.

    <%@ Reference Control="MyUserControl.ascx" %>
    
    Nota:

    Per caricare il controllo a livello di programmazione, utilizzare @ Reference. Se si aggiunge un controllo utente alla pagina in modo dichiarativo utilizzare @ Register. Per ulteriori informazioni, vedere Procedura: includere un controllo utente in una pagina Web ASP.NET.

  3. Creare un'istanza variabile per il controllo utente utilizzando il nome della classe del controllo. La classe apparterrà allo spazio dei nomi ASP.

    Ad esempio, se si desidera creare un'istanza del controllo utente dichiarata come classe Spinner, utilizzare la sintassi seguente:

    Protected Spinner1 As ASP.Spinner
    
    Protected ASP.Spinner Spinner1;
    
  4. Creare un'istanza del controllo utente nel codice chiamando il metodo LoadControl.

  5. Se necessario, assegnare i valori della proprietà, quindi aggiungere il controllo all'insieme ControlCollection di un contenitore nella pagina, come, ad esempio, un controllo PlaceHolder.

    Nota:

    Se si aggiungono controlli all'oggetto ControlCollection utilizzando il metodo Add, questi vengono inseriti nell'insieme secondo l'ordine di elaborazione. Se si desidera aggiungere un controllo a un percorso specifico nell'insieme, utilizzare il metodo AddAt e specificare la posizione dell'indice in cui archiviare il controllo.

Esempio

Nell'esempio riportato di seguito viene illustrata una pagina Web ASP.NET che carica un controllo utente a livello di programmazione. La pagina include una direttiva @ Reference per specificare il file del controllo. Il metodo LoadControl legge il file e ne crea un'istanza come controllo da inserire nella pagina.

<%@ 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>

Vedere anche

Concetti

Cenni preliminari sui controlli utente ASP.NET