다음을 통해 공유


방법: 프로그래밍 방식으로 ASP.NET 웹 페이지에 컨트롤 추가

업데이트: 2007년 11월

때때로 디자인 타임보다 런타임에 컨트롤을 만들면 더 효과적일 수 있습니다. 예를 들어 검색 결과 페이지를 테이블에 표시하는 경우를 가정합니다. 반환될 항목의 개수를 모르므로 반환되는 각 항목에 대해 테이블 행을 하나씩 동적으로 생성할 수 있습니다.

참고:

기존 컨트롤은 컨트롤을 동적으로 만드는 방법을 통해 얻을 수 있는 기능을 제공하는 경우가 많습니다. 예를 들어 Repeater, DataList, RadioButtonList 등의 컨트롤은 페이지가 실행될 때 행 또는 기타 컨트롤 요소를 동적으로 만들 수 있습니다.

컨트롤을 프로그래밍 방식으로 페이지에 추가하려면 새 컨트롤을 위한 컨테이너가 있어야 합니다. 예를 들어 테이블 행을 만들 경우에는 테이블이 컨테이너입니다. 컨테이너로 사용할 컨트롤이 없으면 PlaceHolder 또는 Panel 웹 서버 컨트롤을 사용할 수 있습니다.

경우에 따라 정적 텍스트와 컨트롤을 둘 다 만들 수도 있습니다. 정적 텍스트를 만들려면 Literal 또는 Label 웹 서버 컨트롤을 사용할 수 있습니다. 그런 다음 다른 컨트롤과 마찬가지로 이러한 컨트롤을 컨테이너에 추가할 수 있습니다. 런타임에 만든 컨트롤의 뷰 상태에 대한 내용은 동적 웹 서버 컨트롤 및 뷰 상태를 참조하십시오.

중요:

컨트롤을 프로그래밍 방식으로 ASP.NET 웹 페이지에 추가하려면

  1. 다음 예제와 같이 컨트롤의 인스턴스를 만들고 속성을 설정합니다.

    Dim myLabel As New Label()
    myLabel.Text = "Sample Label"
    
    Label myLabel = new Label();
    myLabel.Text = "Sample Label";
    
    참고:

    일반적으로 컨트롤은 페이지 초기화 단계에서 페이지에 추가됩니다. 페이지 단계에 대한 자세한 내용은 ASP.NET 페이지 수명 주기 개요를 참조하십시오.

  2. 다음 예제와 같이 페이지에 이미 있는 Controls 컬렉션 컨테이너에 새 컨트롤을 추가합니다.

    Dim Panel1 As New Panel()
    Panel1.Controls.Add(myLabel)
    
    Panel Panel1= new Panel();
    Panel1.Controls.Add(myLabel);
    
    참고:

    Controls 속성은 컬렉션이므로 AddAt 메서드를 사용하여 특정 위치(예: 다른 컨트롤 앞)에 새 컨트롤을 추가할 수 있습니다. 그러나 이렇게 하면 페이지에 오류가 발생할 수 있습니다. 자세한 내용은 동적 웹 서버 컨트롤 및 뷰 상태를 참조하십시오.

    다음 코드 예제에서는 DropDownList1이라는 컨트롤의 SelectedIndexChanged 이벤트에 대한 이벤트 처리기를 보여 줍니다. 이 처리기는 사용자가 드롭다운 목록에서 선택한 수만큼 레이블 컨트롤을 만듭니다. 컨트롤의 컨테이너는 Placeholder1이라는 PlaceHolder 웹 서버 컨트롤입니다.

    보안 정보:

    웹 페이지의 사용자 입력에는 잠재적으로 악의적인 클라이언트 스크립트가 포함될 수 있습니다. 기본적으로 ASP.NET 페이지에서는 사용자 입력 내용에 스크립트나 HTML 요소가 포함되어 있지 않은지 유효성을 검사합니다. 자세한 내용은 스크립트 악용 개요를 참조하십시오.

    Private Sub DropDownList1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DropDownList1.SelectedIndexChanged
        Dim DropDownList1 As New DropDownList()
        Dim PlaceHolder1 As New PlaceHolder()
        Dim i As Integer
        Dim numlabels As Integer
    
        ' Get the number of labels to create.
        numlabels = CInt(DropDownList1.SelectedItem.Text)
        For i = 1 To numlabels
            Dim myLabel As Label = New Label()
            ' Set the label's Text and ID properties.
            myLabel.Text = "Label " & i
            myLabel.ID = "Label" & i
            PlaceHolder1.Controls.Add(myLabel)
            ' Add a spacer in the form of an HTML <br /> element
            Dim spacer As LiteralControl = New LiteralControl("<br />")
            PlaceHolder1.Controls.Add(spacer)
        Next
    End Sub
    
    private void DropDownList1_SelectedIndexChanged(object sender, System.EventArgs e)
    {
        DropDownList DropDownList1 = new DropDownList();
        PlaceHolder PlaceHolder1 = new PlaceHolder();
    
      // Get the number of labels to create.
     int numlabels = System.Convert.ToInt32(DropDownList1.SelectedItem.Text);
     for (int i=1; i<=numlabels; i++)
     {
       Label myLabel = new Label();
    
       // Set the label's Text and ID properties.
       myLabel.Text = "Label" + i.ToString();
       myLabel.ID = "Label" + i.ToString();
       PlaceHolder1.Controls.Add(myLabel);
       // Add a spacer in the form of an HTML <br /> element.
       PlaceHolder1.Controls.Add(new LiteralControl("<br />"));
     } 
    }
    

참고 항목

작업

방법: 프로그래밍 방식으로 HTML 서버 컨트롤 속성 설정

방법: 프로그래밍 방식으로 ASP.NET 서버 컨트롤 스타일 속성 설정

개념

ASP.NET 웹 서버 컨트롤 이벤트 모델

기타 리소스

프로그래밍 방식으로 ASP.NET 서버 컨트롤 속성 설정