방법: 프로그래밍 방식으로 ASP.NET 웹 페이지에 컨트롤 추가
업데이트: 2007년 11월
때때로 디자인 타임보다 런타임에 컨트롤을 만들면 더 효과적일 수 있습니다. 예를 들어 검색 결과 페이지를 테이블에 표시하는 경우를 가정합니다. 반환될 항목의 개수를 모르므로 반환되는 각 항목에 대해 테이블 행을 하나씩 동적으로 생성할 수 있습니다.
참고: |
---|
기존 컨트롤은 컨트롤을 동적으로 만드는 방법을 통해 얻을 수 있는 기능을 제공하는 경우가 많습니다. 예를 들어 Repeater, DataList, RadioButtonList 등의 컨트롤은 페이지가 실행될 때 행 또는 기타 컨트롤 요소를 동적으로 만들 수 있습니다. |
컨트롤을 프로그래밍 방식으로 페이지에 추가하려면 새 컨트롤을 위한 컨테이너가 있어야 합니다. 예를 들어 테이블 행을 만들 경우에는 테이블이 컨테이너입니다. 컨테이너로 사용할 컨트롤이 없으면 PlaceHolder 또는 Panel 웹 서버 컨트롤을 사용할 수 있습니다.
경우에 따라 정적 텍스트와 컨트롤을 둘 다 만들 수도 있습니다. 정적 텍스트를 만들려면 Literal 또는 Label 웹 서버 컨트롤을 사용할 수 있습니다. 그런 다음 다른 컨트롤과 마찬가지로 이러한 컨트롤을 컨테이너에 추가할 수 있습니다. 런타임에 만든 컨트롤의 뷰 상태에 대한 내용은 동적 웹 서버 컨트롤 및 뷰 상태를 참조하십시오.
중요: |
---|
컨트롤을 프로그래밍 방식으로 ASP.NET 웹 페이지에 추가하려면
다음 예제와 같이 컨트롤의 인스턴스를 만들고 속성을 설정합니다.
Dim myLabel As New Label() myLabel.Text = "Sample Label"
Label myLabel = new Label(); myLabel.Text = "Sample Label";
참고: 일반적으로 컨트롤은 페이지 초기화 단계에서 페이지에 추가됩니다. 페이지 단계에 대한 자세한 내용은 ASP.NET 페이지 수명 주기 개요를 참조하십시오.
다음 예제와 같이 페이지에 이미 있는 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 서버 컨트롤 스타일 속성 설정