수색…


소개

사용자 컨트롤은 ASPX 페이지와 같은 방식으로 코드 숨김으로 HTML 태그 및 서버 컨트롤로 채울 수있는 컨테이너입니다. 다시 사용할 수있는 작은 페이지 단위로 취급되므로 독립 실행 형 페이지로 실행할 수 없으며 html , 본문 또는 양식 HTML 요소가 없어야합니다.

사용자 컨트롤 소개

사용자 정의 컨트롤은 마스터 페이지와 마찬가지로 ASP.NET 페이지 전체에서 재사용이 가능하도록 만들어졌습니다. 기본 페이지 레이아웃을 공유하는 대신 사용자 컨트롤은 HTML / ASP.NET 기본 제공 서버 컨트롤 그룹이나 특정 양식 레이아웃 (예 : 의견 제출 또는 참석자 노트)을 공유합니다.

사용자 정의 컨트롤에는 클라이언트 측 스크립트를 비롯하여 HTML 컨트롤과 ASP.NET 서버 컨트롤이 모두 포함될 수 있습니다.

사용자 정의 컨트롤에는 일반적으로 정의 위에 Control 지시문이 포함됩니다.

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

ASPX 페이지와 마찬가지로 사용자 컨트롤은 특정 이벤트 및 작업을 수행하기 위해 코드 숨김 파일과 연결될 수있는 마크 업으로 구성되므로 ASPX 페이지에서 사용 가능한 모든 HTML 태그는 <html> , <body><form> <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, 태그 이름 및 태그 접두어로 선언해야합니다.

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

그런 다음 ASP.NET 기본 제공 서버 컨트롤과 같은 ASPX 페이지 안에 사용자 정의 컨트롤을 배치 할 수 있습니다.

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

LoadControl 메서드를 실행할 때 사용자 정의 컨트롤 ASCX 파일이 이미 만들어져 있어야합니다.

사용자 정의 컨트롤을 프로그래밍 방식으로 선언하는 또 다른 방법은 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