다음을 통해 공유


방법: ASP.NET 웹 페이지에서 이벤트 처리기 만들기(Visual Studio)

업데이트: 2007년 11월

Visual Studio에서 ASP.NET 웹 페이지를 편집하는 경우 다양한 방법을 사용하여 컨트롤 및 페이지에 대한 서버 이벤트 처리기를 만들 수 있습니다. 이 중 일부 방법은 사용 중인 프로그래밍 언어에 따라 달라집니다. Visual Web Developer의 기능을 사용하거나 선언적으로 또는 코드를 통해 처리기를 만들 수 있습니다.

참고:

클라이언트 스크립트에 대해 컨트롤이 브라우저에서 페이지의 요소로 사용될 경우 실행되는 이벤트를 추가할 수도 있습니다. 자세한 내용은 방법: ASP.NET 웹 서버 컨트롤에 클라이언트 스크립트 이벤트 추가를 참조하십시오.

컨트롤이 두 개 이상의 이벤트를 지원할 경우에는 일반적으로 한 이벤트가 기본 이벤트가 되도록 구성됩니다. 예를 들어 Button 컨트롤의 기본 이벤트는 Click 이벤트입니다.

Visual Web Developer에서 이벤트 처리기 만들기

기본 이벤트에 대한 이벤트 처리기를 만들려면

  • 디자인 뷰에서 기본 이벤트 처리기를 만들 컨트롤 또는 페이지를 두 번 클릭합니다.

    기본 이벤트에 대한 처리기가 만들어지고 이 이벤트 처리기에 삽입 지점이 포함된 상태로 코드 편집기가 열립니다.

속성 창에서 이벤트 처리기를 만들려면

  1. 디자인 뷰에서 이벤트 처리기를 만들 컨트롤을 선택합니다.

    참고:

    디자인 뷰에서 페이지를 선택할 수 없으므로 이 방법을 사용하여 페이지 수준 이벤트를 만들 수 없습니다. 대신 위의 방법을 사용하십시오.

  2. 속성에서 이벤트 기호 를 클릭합니다.

    속성 창에 선택한 컨트롤에 대한 이벤트 목록이 표시됩니다.

  3. 이벤트 이름 옆에 있는 상자에서 다음 중 하나를 수행합니다.

    • 해당 이벤트에 대한 새 이벤트 처리기를 만들려면 두 번 클릭합니다. 디자이너에서는 controlID_event 규칙을 사용하여 처리기의 이름을 지정합니다.

    • 만들려는 처리기의 이름을 입력합니다.

    • 드롭다운 목록에서 기존 처리기의 이름을 선택합니다.

      이벤트에 대한 올바른 시그니처를 가진 메서드 목록이 드롭다운 목록에 표시됩니다.

    작업이 끝나면 Visual Web Developer에서는 코드 편집기로 전환하고 처리기에 삽입 지점을 놓습니다.

코드 편집기에서 이벤트 처리기를 만들려면

  1. 다음 방법 중 하나를 사용하여 코드 편집기로 전환합니다.

    • 단일 파일로 구성된 웹 페이지의 경우 소스 뷰로 전환합니다.

    • 코드 숨김 페이지의 경우 솔루션 탐색기에서 페이지 이름을 마우스 오른쪽 단추로 클릭한 다음 코드 보기를 클릭합니다.

      참고:

      C#을 사용하는 코드 숨김 페이지의 경우 마지막 단계에서 드롭다운 목록에 컨트롤 이름이 나타나지 않으므로 이 방법을 사용할 수 없습니다. 대신 다른 방법 중 하나를 사용하십시오.

  2. 코드 편집기 창 맨 위의 왼쪽에 있는 드롭다운 목록에서 컨트롤을 선택한 다음 오른쪽에 있는 드롭다운 목록에서 이벤트를 선택합니다.

    참고:

    메서드가 이미 있는 이벤트는 굵은 텍스트로 표시됩니다.

이벤트 처리기를 선언적으로 만들기

Visual Web Developer를 사용하여 처리기를 만드는 경우 Visual Web Developer에서는 기초 처리기를 만들고 이 처리기를 호출하도록 컨트롤을 구성합니다. Visual Web Developer를 사용하지 않고 사용자가 직접 수행할 수도 있습니다.

페이지 이벤트에 대한 처리기를 만들려면

  • 코드 편집기에서 이름이 Page_event인 메서드를 만듭니다.

    예를 들어 페이지의 Load 이벤트에 대한 처리기를 만들려면 Page_Load라는 메서드를 만듭니다.

    참고:

    페이지 이벤트 처리기는 다른 컨트롤 이벤트 처리기와 달리 매개 변수를 사용할 필요가 없습니다.

    ASP.NET 페이지는 이름이 Page_event인 메서드에 자동으로 페이지 이벤트를 바인딩합니다. 이 자동 바인딩 설정은 기본적으로 true로 설정되는 @ Page 지시문의 AutoEventWireup 특성을 통해 구성됩니다. AutoEventWireup을 false로 설정하면 페이지에서는 Page_event 명명 규칙을 사용하는 메서드를 자동으로 검색하지 않습니다.

    다음 코드 예제에서는 페이지의 Load 이벤트에 대한 처리기를 보여 줍니다.

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Page.IsPostBack Then
            Response.Write("<br>Page has been posted back.")
        End If
    End Sub
    
    protected void Page_Load(object sender, EventArgs e)
    {
        if (IsPostBack)
        {
            Response.Write("<br>Page has been posted back.");
        }
    }
    

컨트롤에 대한 처리기를 선언적으로 추가하려면

  1. 코드 편집기에서 적절한 시그니처를 가진 이벤트 처리 메서드를 만듭니다.

    메서드에 원하는 이름을 지정할 수 있습니다.

  2. 컨트롤 태그에서 이름이 On<event name>인 특성을 사용하여 이벤트 처리기를 연결합니다. 이때 이벤트 처리기 메서드의 이름을 값으로 사용합니다.

    다음 코드 예제에서는 TextChanged 이벤트가 NameChange라는 이벤트 처리기 메서드에 바인딩되어 있는 TextBox 컨트롤의 태그를 보여 줍니다.

    보안 정보:

    이 예제에는 사용자 입력을 허용하는 텍스트 상자가 있으므로 보안상 위험할 수 있습니다. 기본적으로 ASP.NET 페이지에서는 사용자 입력 내용에 스크립트나 HTML 요소가 포함되어 있지 않은지 유효성을 검사합니다. 자세한 내용은 스크립트 악용 개요를 참조하십시오.

    Protected Sub NameChange(ByVal sender As Object, ByVal e As System.EventArgs) Handles textbox1.TextChanged
        'Sub for the OnTextChanged event
    End Sub
    
    <asp:TextBox ID="textbox1" Runat="server" 
    Text="" 
    OnTextChanged="NameChange" />
    
  3. 코드에 이벤트 메서드를 추가합니다. 예를 들어 다음 코드 예제에서는 이벤트 처리기 메서드 NameChange에 대한 코드를 보여 줍니다.

    protected void NameChange(object sender, EventArgs e)
    {
        //Method for the OnTextChanged event.
    }
    

Visual Basic을 사용하여 암시적으로 이벤트 처리기를 추가하려면

  1. 코드 편집기에서 적절한 시그니처를 가진 이벤트 처리 메서드를 만듭니다.

    메서드에 원하는 이름을 지정할 수 있습니다.

  2. Handles 키워드를 사용하여 컨트롤 및 메서드에 바인딩할 이벤트를 지정합니다.

    다음 코드 예제에서는 SampleButton 단추의 Click 이벤트에 대한 이벤트 처리기를 보여 줍니다. 이 예제에서 메서드 이름은 Clicked로 지정됩니다.

    Protected Sub SampleButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) _
            Handles SampleButton.Click
        ' Code goes here.
    End Sub
    
    참고:

    Handles 키워드를 사용하는 경우 컨트롤 태그에 이벤트 특성을 포함하지 마십시오. 이벤트 특성이 포함되면 처리기가 두 번 호출됩니다.

  3. 메서드에서 여러 이벤트를 처리하는 경우 추가 이벤트의 이름을 쉼표로 구분하여 Handles 절에 추가합니다.

    다음 코드 예제에서는 여러 단추에 대한 Click 이벤트를 처리하는 메서드를 보여 줍니다. 처리기에서 코드는 sender 인수를 테스트하여 어떤 단추를 클릭했는지 확인합니다.

    Protected Sub AnyClicked(ByVal sender As Object, ByVal e As System.EventArgs) _
            Handles Button1.Click, Button2.Click, Button3.Click
        Dim b As Button = CType(sender, Button)
        Response.Write("You clicked the button labeled " & b.ID)
    End Sub
    

참고 항목

작업

방법: ASP.NET 웹 페이지에서 런타임에 이벤트 처리기 동적으로 바인딩

개념

ASP.NET 웹 서버 컨트롤 개요

기타 리소스

이벤트 처리 및 발생

ASP.NET 웹 페이지에서 서버 이벤트 처리