ClientScriptManager

비하인드 코드에서 자바스크립트 사용하기

ClientScriptManager 클래스는 클라이언트측 스크립트를 관리하고 웹 응용 프로그램에 추가하는 데 사용됩니다. Page 개체의 ClientScript 속성에서 ClientScriptManager 클래스에 대한 참조를 가져올 수 있습니다.

페이지의 HTML 태그에 스크립트를 포함시켜 웹 페이지에 클라이언트측 스크립트를 선언적으로 추가할 수 있습니다. 그러나 클라이언트측 스크립트를 동적으로 추가해야 하는 경우도 있습니다. 스크립트를 동적으로 추가하려면 스크립트를 추가할 시기와 방법에 따라 RegisterClientScriptBlock 메서드, RegisterClientScriptInclude 메서드, RegisterStartupScript 메서드 또는 RegisterOnSubmitStatement 메서드를 사용합니다. 자세한 내용은 방법: ASP.NET 웹 페이지에 동적으로 클라이언트 스크립트 추가를 참조하십시오.

ClientScriptManager 클래스에서는 String 키와 Type으로 스크립트를 고유하게 식별합니다. 키 및 형식이 같은 스크립트는 중복된 것으로 간주됩니다. 페이지에서 사용할 수 있는 여러 사용자 정의 컨트롤의 유사한 스크립트를 서로 혼동하지 않도록 하는 데 도움이 됩니다.

ClientScriptManager 클래스는 다시 게시를 수행하지 않고 클라이언트에서 서버 코드를 실행하는 편이 나은 경우에 클라이언트 콜백을 호출하는 데 사용됩니다. 클라이언트 콜백 호출은 서버에 대한 out-of-band 콜백을 수행하는 것을 의미합니다. 클라이언트 콜백에서 클라이언트 스크립트 함수는 ASP.NET 웹 페이지로 비동기 요청을 보냅니다. 웹 페이지에서는 해당 페이지의 정상 수명 주기의 수정된 버전을 실행하여 콜백을 처리합니다. 호출될 경우 클라이언트에서 서버측 이벤트를 다시 호출하도록 하는 클라이언트측 함수에 대한 참조를 가져오려면 GetCallbackEventReference 메서드를 사용합니다. 자세한 내용은 ASP.NET 웹 페이지에서 다시 게시하지 않는 클라이언트 콜백 구현을 참조하십시오.

다음 코드 예제에서는 ClientScriptManager 클래스의 RegisterClientScriptBlock 메서드를 사용하는 방법을 보여 줍니다. 페이지에는 두 개의 클라이언트측 스크립트가 정의되는데, 하나는 페이지가 로드될 때 클라이언트측 경고 메시지를 표시하는 PopupScript이고 다른 하나는 HTML 단추의 onClick 이벤트에 대한 클라이언트측 처리기를 정의하는 ButtonClickScript입니다.

<%@ Page Language="C#"%>
<script runat="server">
  public void Page_Load(Object sender, EventArgs e)
  {
    // Define the name and type of the client scripts on the page.
    String csname1 = "PopupScript";
    String csname2 = "ButtonClickScript";
    Type cstype = this.GetType();
    // Get a ClientScriptManager reference from the Page class.
    ClientScriptManager cs = Page.ClientScript;

    // Check to see if the startup script is already registered.
    if (!cs.IsStartupScriptRegistered(cstype, csname1)) //스크립트가 등록되어져 있는지 체크
    {
      String cstext1 = "alert('Hello World');";
cs.RegisterStartupScript(cstype, csname1, cstext1, true); //onLoad  일때 실행됩니다.
    }

    // Check to see if the client script is already registered.
    if (!cs.IsClientScriptBlockRegistered(cstype, csname2))
    {
      StringBuilder cstext2 = new StringBuilder();
      cstext2.Append("<script type=text/javascript> function DoClick() {");
      cstext2.Append("Form1.Message.value='Text from client script.'} </");
      cstext2.Append("script>");
cs.RegisterClientScriptBlock(cstype, csname2, cstext2.ToString(), false);

//false  이면 스크립트 블로 주위로 <script></script>안붙는다는 얘기~
    }
  }
</script>
<html>
  <head>
    <title>ClientScriptManager Example</title>
  </head>
  <body>
  <form id="Form1"
         runat="server">
  <input type="text" id="Message"> <input type="button" value="ClickMe" onclick="DoClick()">
  </form>
  </body>
</html>

+ Recent posts