방법: ASP.NET 웹 페이지에 동적으로 클라이언트 스크립트 추가

Visual Studio 2010

업데이트: 2007년 11월

서버 코드를 사용하여 페이지에 클라이언트 스크립트를 추가할 수 있습니다. 런타임에서만 사용할 수 있는 정보에 따라 클라이언트 스크립트의 내용이 달라지는 경우 서버 코드에서 클라이언트 스크립트를 만들면 유용합니다. 또한 클라이언트 스크립트를 동적으로 페이지에 추가하여 다음과 같은 경우에 클라이언트 스크립트를 실행할 수 있습니다.

ASP.NET 웹 페이지에 동적으로 클라이언트 스크립트를 추가하려면

  • 서버 코드에서 다음 표에 제공된 메서드 중 하나를 호출합니다.

    메서드

    설명

    RegisterClientScriptBlock

    페이지의 맨 위에 스크립트 블록을 추가합니다. 스크립트를 문자열로 만든 다음 메서드에 전달하면 페이지에 추가됩니다. 이 메서드를 사용하여 페이지에 스크립트를 삽입할 수 있습니다. 스크립트는 모든 요소가 완료되기 전에 페이지에 렌더링되므로 스크립트에서 페이지의 모든 요소를 참조하지 못할 수도 있습니다.

    RegisterClientScriptInclude

    RegisterClientScriptBlock 메서드와 비슷하지만 외부 .js 파일을 참조하는 스크립트 블록을 추가합니다. 동적으로 추가되는 다른 모든 스크립트보다 포함 파일이 먼저 추가되므로 페이지의 일부 요소를 참조하지 못할 수도 있습니다.

    RegisterStartupScript

    페이지의 onload 이벤트가 발생하기 전에 페이지에서 로드가 끝나면 실행되는 스크립트 블록을 페이지에 추가합니다. 일반적으로 스크립트는 이벤트 처리기 또는 함수로 만들어지지 않으며 한 번 실행할 문만 포함합니다.

    RegisterOnSubmitStatement

    페이지의 onsubmit 이벤트에 대한 응답으로 실행되는 스크립트를 추가합니다. 이 스크립트는 페이지가 제출되기 전에 실행되므로 페이지 제출을 취소할 수 있습니다.

    다음 코드 예제에서는 사용자가 페이지를 서버에 다시 게시하는 단추를 클릭할 경우 실행되는 클라이언트 스크립트를 페이지에 추가하는 방법을 보여 줍니다. 이 때 사용자에게 다시 게시 여부를 확인하는 팝업 창이 클라이언트 스크립트에 표시됩니다.

    Protected Sub Page_Load(ByVal sender As Object, _
            ByVal e As System.EventArgs)
        Dim scriptText As String
        scriptText = "return confirm('Do you want to submit the page?')"
        ClientScript.RegisterOnSubmitStatement(Me.GetType(), _
            "ConfirmSubmit", scriptText)
    End Sub
    
protected void Page_Load(Object sender, EventArgs e)
{
    String scriptText = 
        "return confirm('Do you want to submit the page?')";
    ClientScript.RegisterOnSubmitStatement(this.GetType(), 
        "ConfirmSubmit", scriptText);
}
표시: