작성자: Builder, Tony Patton
ASP.NET은 강력한 플랫폼을 제공하지만 개발자는 JavaScript와 같은 성숙한 기술을 무시해서는 안 됩니다. 이번 글에서는 토니
Patton은 웹 개발에서 JavaScript를 ASP.NET 컨트롤과 통합하는 방법을 설명합니다.
웹 개발 플랫폼은 유연성과 수많은 기능을 제공하지만 필요한 작업을 완료하기 위해 기존 기술에 의존하고 싶거나 의존해야 하는 경우가 많습니다. ASP.NET은 강력한 개발 플랫폼을 제공하면서도 동시에 JavaScript와 같은 성숙한 기술을 제공합니다. 이 기사에서는 JavaScript 코드를 ASP.NET 컨트롤에 연결하는 방법도 무시해서는 안 됩니다.
기존 방식
일반적으로 웹 애플리케이션에 팝업이나 확인 창 또는 기타 클라이언트 측 기능이 필요한 경우 필요한 JavaScript 메소드를 생성하고 필요할 때 호출합니다. 예를 들어 목록 A에는 사용자가 양식 제출을 계속하거나 취소하는 데 사용할 수 있는 확인 창이 포함되어 있습니다.
제출 버튼을 선택한 후 JavaScript의 verifySubmit 메소드가 호출됩니다. 이 확인 프롬프트를 통해 사용자는 양식 제출(확인 선택) 또는 취소(취소 선택)를 진행할 수 있습니다.
위 코드는 계획대로 작동하지만 ASP.NET과 같은 개발 플랫폼에서 작업할 때는 그렇게 간단하지 않습니다.
ASP.NET 대체 옵션
ASP.NET은 입력 단추 및 텍스트 상자와 같은 HTML 요소의 사용을 지원하지만 ASP.NET 자체 개발 모델을 기반으로 추가 기능을 제공하는 완전한 컨트롤 요소 집합이 있습니다.
ASP.NET에 JavaScript를 연결하는 것은 직접적인 HTML/JavaScript 접근 방식만큼 간단하지 않습니다. ASP.NET 프로그래밍 모델은 기본 페이지 클래스에 페이지 요소에 스크립트 블록을 연결하는 메서드를 제공합니다. 다음 방법을 사용하여 JavaScript를 페이지 또는 페이지 요소에 첨부하거나 통합할 수 있습니다.
엘
RegisterClientScriptBlock: 페이지 개체 <form에 클라이언트 측 스크립트인 스크립트 블록을 포함할 수 있습니다.
실행 =
server> 요소의 여는 태그 이후에 실행이 시작됩니다. 스크립트 블록은 출력을 개체로 제출하므로 두 개의 <script> 요소 태그를 추가해야 합니다.
엘
RegisterOnSubmitStatement: 페이지 개체의 OnSubmit 이벤트에 스크립트 블록/메서드를 할당할 수 있습니다.
엘
RegisterStartupScript: RegisterClientScriptBlock 메서드와 유사하게 페이지에 스크립트 블록을 포함할 수 있습니다. 이 메서드는 페이지 개체 <form에 있습니다.
실행 =
server> 요소의 닫는 태그 이전에 실행되는 스크립트 블록은 출력을 개체로 제출하므로 두 개의 <script> 요소 태그를 추가해야 합니다.
각 메소드는 키와 스크립트라는 두 가지 매개변수를 사용할 수 있습니다. 키 값은 고유한 키 값을 사용하여 여러 서버 제어 인스턴스에서 스크립트 블록을 요청할 수 있습니다. 출력 스트림에서 스크립트를 다시 실행하십시오. 두 번째 매개변수 스크립트에는 클라이언트로 전송된 실제 스크립트가 포함되어 있으며 이는 완전한 JavaScript 코드 또는 메소드 이름일 수 있습니다.
이러한 메서드는 VB.NET, C#, J# 또는 기타 언어 등 실제 ASP.NET 페이지 코드에서 사용할 수 있습니다. 목록 B에는 C#으로 작성된 ASP.NET 샘플 코드가 나와 있습니다.
JavaScript 메소드는 문자열 변수를 통해 구성되며 해당 값은 두 번째 인수로 RegisterClientScriptBlock 메소드에 전달되고 실제 메소드 이름은 객체의 속성을 통해 전달됩니다.
속성의 Add 메서드는 ASP.NET 버튼 컨트롤에 할당되며 JavaScript 이벤트가 첫 번째 매개 변수로 전달되고 메서드 이름이 두 번째 매개 변수로 전달됩니다.
또한 스크립트를 계속 사용하기 전에 스크립트가 등록되었는지 확인할 수 있는 IsStartupScriptRegistered 메서드의 사용을 확인할 수 있습니다. 이 문제에 대한 두 가지 방법이 있습니다.
엘
IsStartupScriptRegistered: 클라이언트의 시작 스크립트가 페이지 개체에 등록되었는지 여부를 확인합니다. 해당 단일 매개 변수는 스크립트의 이름입니다.
엘
IsClientScriptBlockRegistered: 클라이언트의 스크립트 블록이 페이지 개체에 등록되었는지 여부를 확인합니다. 유일한 매개 변수는 스크립트 이름입니다.
문제를 해결하는 또 다른 방법은 페이지 클래스의 RegisterOnSubmitStatement 메소드를 사용하는 것입니다. Listing C는 Listing B의 기능을 반복하지만, verifySubmit 메소드가 페이지의 click 이벤트 대신에 페이지의 submit 이벤트에 연결된다는 점이 다릅니다. 단추.
이 간단한 예에서는 ASP.NET 페이지의 컨트롤에 JavaScript 스크립트 블록과 JavaScript 스크립트를 포함하는 방법을 명확하게 보여줍니다. ASP.NET 컨트롤을 사용하는 경우 이 접근 방식을 사용하면 해당 컨트롤에 스크립트를 연결할 수 있지만 등록 메서드를 사용할 수도 있습니다. 프로젝트의 JavaScript를 중앙 집중화합니다. 스크립트가 포함된 클래스 파일을 만들고 필요에 따라 페이지에서 사용할 수 있습니다. 이렇게 하면 스크립트를 한 곳에서 관리하고 응용 프로그램의 하나 이상의 페이지에서 사용하기가 더 쉬워집니다.
이전 버전과 새 버전의 조합 어떤 개발 플랫폼을 사용하더라도 JavaScript를 클라이언트 측 스크립팅 언어로 사용하는 것을 포기할 가능성은 없습니다. ASP.NET 컨트롤은 클라이언트 측 기능을 개발하기 위한 표준입니다. 많은 함수가 있지만 여전히 JavaScript를 이러한 컨트롤과 "결합"해야 하는 경우가 많습니다. 다행스럽게도 ASP.NET 페이지 클래스에는 페이지와 해당 컨트롤에 스크립트 블록과 메서드를 통합하는 수많은 메서드가 포함되어 있습니다.