Поиск…


Вступление

Элементы управления пользователя - это контейнеры, которые могут быть заполнены с помощью HTML-разметки и серверных элементов управления с кодом так же, как страница ASPX. Они рассматриваются как многократно используемые единицы страницы, поэтому они не могут работать как автономные страницы и не должны содержать HTML-элементы, тела или формы HTML.

Введение пользовательских элементов управления

Элементы управления пользователя предназначены для повторного использования на страницах ASP.NET, аналогичных основным страницам. Вместо совместного использования макета главной страницы пользовательские элементы управления совместно используют группу встроенных элементов управления HTML / ASP.NET или конкретного макета формы, например, представление комментариев или гостевые заметки.

Пользовательский элемент управления может содержать как элементы управления HTML, так и серверные элементы управления ASP.NET, включая клиентские сценарии.

Пользовательские элементы управления обычно включают директиву Control поверх ее определения:

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

Как и ASPX-страница, пользовательские элементы управления состоят из разметки, которые могут быть связаны с кодом за файлом для выполнения определенных событий и задач, поэтому все теги HTML, доступные на странице ASPX, могут использоваться для пользовательских элементов управления, кроме <html> , <body> и <form> теги.

Вот пример простой разметки пользовательского управления:

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

Пример кода:

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

Перед тем, как пользовательский элемент управления вставлен на страницу ASPX, директива Register должна быть указана в верхней части страницы, ссылаясь на пользовательский элемент управления с его исходным URL-адресом, тегом name & tag prefix.

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

После этого вы можете поместить пользовательский элемент управления на страницу ASPX, например, встроенный серверный элемент ASP.NET:

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

Создание экземпляра пользовательского элемента управления программно

Если вы хотите создать экземпляр пользовательского элемента управления внутри кода ASPX за страницей, вам нужно написать декларацию пользовательского управления в событии Page_Load следующим образом:

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);
    }
}

Обратите внимание, что файл ASCX управления пользователем должен быть уже создан при выполнении метода LoadControl.

Еще один способ, с помощью которого программным путем объявлять пользовательские элементы управления, является использование 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);
    }
}

В зависимости от ваших потребностей PlaceHolder помещает элементы управления пользователя в контейнер, сохраняя все элементы управления сервером, динамически добавленные на страницу, где Page.Controls напрямую вставляет пользовательский элемент управления внутри страницы, который более предпочтителен для визуализации элементов управления литералами HTML.

Добавление пользовательских свойств для пользовательского контроля

Как и стандартные встроенные элементы управления ASP.NET, пользовательские элементы управления могут иметь свойства (атрибуты) в своем теге определения. Предположим, вы хотите добавить эффект цвета в файл UserControl.ascx следующим образом:

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

На данный момент пользовательские атрибуты / свойства для пользовательских элементов управления могут быть установлены путем объявления свойств внутри кода пользовательского элемента управления:

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

Кроме того, если вы хотите установить значение по умолчанию для свойства управления пользователем, назначьте значение по умолчанию внутри метода конструктора пользовательского элемента управления.

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

Затем следует изменить пользовательскую разметку для добавления атрибута цвета в следующем примере:

<%@ 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
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow