Szukaj…


Wprowadzenie

Kontrolki użytkownika to kontenery, które można zapełnić znacznikami HTML i kontrolkami serwera z kodem w taki sam sposób, jak stronę ASPX. Są one traktowane jako wielokrotnego użytku mniejszych jednostkach stronie, więc nie może działać jako samodzielne stron i nie musi mający html, body lub formularza HTML elementy w nich.

Wprowadzenie kontroli użytkownika

Kontrolki użytkownika są przeznaczone do ponownego użycia na stronach ASP.NET, podobnie jak strony wzorcowe. Zamiast współużytkować układ strony bazowej, kontrolki użytkownika współużytkują grupę wbudowanych kontrolek serwera HTML / ASP.NET lub określony układ formularza, np. Przesyłanie komentarzy lub notatek gości.

Kontrolka użytkownika może zawierać zarówno kontrolkę HTML, jak i kontrolkę serwera ASP.NET, w tym skrypty po stronie klienta.

Kontrole użytkownika zwykle zawierają dyrektywę Control oprócz jej definicji:

<%@ Control Language="C#" AutoEventWireup="True" CodeFile="UserControl.ascx.cs" %>

Podobnie jak strona ASPX, formanty użytkownika składają się ze znaczników, które mogą być powiązane z kodem za plikiem w celu wykonywania określonych zdarzeń i zadań, dlatego też wszystkie tagi HTML dostępne na stronie ASPX mogą być używane w kontrolkach użytkownika z wyjątkiem <html> , <body> i <form> tagi.

Oto przykład prostego znacznika kontroli użytkownika:

<%-- UserControl.ascx --%>
<%@ Control Language="C#" AutoEventWireup="True" CodeFile="UserControl.ascx.cs" %>
<div>
    <asp:Label ID="Label1" runat="server" />
    <br />
    <asp:Button ID="Button1" runat="server" Text="Click Here" OnClick="Button1_Click" />
</div>

Przykład kodu:

// UserControl.ascx.cs
public partial class UserControl : System.Web.UI.UserControl
{
    protected void Button1_Click(Object sender, EventArgs e)
    {
        Label1.Text = "Hello World!";
    }
}

Zanim kontrolka użytkownika zostanie wstawiona na stronie ASPX, na górze strony powinna zostać zadeklarowana dyrektywa Register , odwołująca się do kontrolki użytkownika z jej źródłowym adresem URL, nazwą i prefiksem.

<%@ Register Src="UserControl.ascx" TagName="UserControl" TagPrefix="uc" %>

Następnie możesz umieścić kontrolę użytkownika na stronie ASPX, taką jak wbudowana kontrola serwera ASP.NET:

<uc:UserControl ID="UserControl1" runat="server" />

Programowe tworzenie instancji kontroli użytkownika

Jeśli chcesz utworzyć instancję kontroli użytkownika wewnątrz kodu ASPX za stroną, musisz napisać deklarację kontroli użytkownika na zdarzeniu Page_Load w następujący sposób:

public partial class Default : System.Web.UI.Page
{
    protected void Page_Load(Object sender, EventArgs e)
    {
        Control control1 = LoadControl("UserControl.ascx");
        Page.Controls.Add(control1);
    }
}

Należy zauważyć, że plik ASCX kontroli użytkownika powinien być już utworzony podczas wykonywania metody LoadControl.

Innym znanym sposobem programowego zadeklarowania kontroli użytkownika jest użycie PlaceHolder :

public partial class Default : System.Web.UI.Page
{
    public PlaceHolder Placeholder1;
    protected void Page_Load(Object sender, EventArgs e)
    {
        Control control1 = LoadControl("UserControl.ascx");
        Placeholder1.Controls.Add(control1);
    }
}

W zależności od potrzeb PlaceHolder umieszcza kontrolki użytkownika w kontenerze, w którym wszystkie kontrolki serwera są dynamicznie dodawane do strony, a Page.Controls bezpośrednio wstawia kontrolę użytkownika na stronie, która jest bardziej preferowana do renderowania formantów dosłownych HTML.

Dodawanie niestandardowych właściwości do kontroli użytkownika

Podobnie jak standardowe wbudowane kontrolki serwera ASP.NET, kontrolki użytkownika mogą mieć właściwości (atrybuty) w znaczniku definicji. Załóżmy, że chcesz dodać efekt koloru do pliku UserControl.ascx następujący sposób:

<uc:UserControl ID="UserControl1" runat="server" Color="blue" />

W tym momencie niestandardowe atrybuty / właściwości kontrolek użytkownika można ustawić, deklarując właściwości wewnątrz kodu kontroli użytkownika za:

private String _color;
public String Color
{
    get
    {
        return _color;
    }
    set
    {
        _color = value;
    }
}

Ponadto, jeśli chcesz ustawić wartość domyślną we właściwości kontroli użytkownika, przypisz wartość domyślną do metody konstruktora kontroli użytkownika.

public UserControl()
{
    _color = "red";
}

Następnie należy zmodyfikować znaczniki kontroli użytkownika, aby dodać atrybut koloru w następujący sposób:

<%@ Control Language="C#" AutoEventWireup="True" CodeFile="UserControl.ascx.cs" %>
<div>
    <span style="color:<%= Color %>"><asp:Label ID="Label1" runat="server" /></span>
    <br />
    <asp:Button ID="Button1" runat="server" Text="Click Here" OnClick="Button1_Click" />
</div>


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow