상세 컨텐츠

본문 제목

ASP.NET $get(), $find의 차이점

Web Development/ASP.NET

by thankee 2009. 3. 5. 16:55

본문

ASP.NET에서 ScriptManager가 페이지에 위치했을 때 자바스크립트에서는 $get()과 $find()를 사용할 수 있게 됩니다.

1.$GET()

$get는 docuemnt.getElementById와 element.getElementById 함수를 간단하게 사용할 수 있게 합니다. $get함수는 ASP.NET AJAX client sidle librarySys.UI.DomElement.getElementById와 관련이 있으며, 따라서 페이지에 ScriptManager을 위치시켰을 때에 비로소 사용할 수 있습니다. $get함수는 두가지 매개변수를 받습니다. 첫번째는 찾을 컨트롤의 id이며, 두번째는 선택적으로 사용가능한 '찾을 컨트롤이 포함된 부모 Element'입니다.

$get(id, element);

만약 디버깅 모드에서 $get함수를 찾아보면 다음과 같은 코드로 이루어져 있음을 알 수 있습니다.

function get(id, element)
{
        //  validation code that was removed

        if (!element) return document.getElementById(id);
        if (element.getElementById) return element.getElementById(id);

        //  manual DOM walk that was removed ...
    }

* 주의 : $get은 getElementById와 동일합니다. 따라서 서버컨트롤의 경우 ClientID를 $get()의 매개변수로 사용해야합니다. 한가지 더 참고할 점은, 특정 id를 가진 컨트롤을 찾을 필요없이, 해당 id를 적어주는 것만으로도 자바스크립트에서 해당 id를 갖는 컨트롤을 매핑시켜준다는 점입니다.
<span id="spanid">span text</span>
위의 코드에서는 아래의 코드가 작동합니다.(IE6, 7, FF 모두 가능)
alert(spanid.innerHTML);

2. $FIND() 

ASP.NET AJAX 컨트롤의 ID또는 BehaviorID로 해당 컨트롤을 찾을 수 있게합니다. 마찬가지로 2가지 매개변수를 받는데 첫번째는 찾을 ASP.NET AJAX 컨트롤의 id, 두번째는 선택적으로 사용가능한 '찾을 컨트롤을 포함하는 ASP.NET AJAX 컨트롤 또는 부모 Element'입니다.

$find(id, parent);

* BehaviorID : 모든 ASP.NET AJAX Control Toolkit의 컨트롤은 BehaviorID를 가집니다. 이는 ExtenderControlBase에 기초하고 있으며, 모든 Ajax Toolkit Control은 이를 상속하고 있습니다. 아무튼, 개발자는 BehaviorID를 지정할수도 그렇지 않을 수 도 있습니다. 지정하지 않을 경우 해당 컨트롤의 ClientID와 동일한 값이 Behavior값으로 자동 지정됩니다. 반대로 BehaviorID를 지정한다면 Client에서 해당 컨트롤의 ID는 BehaviorID로 지정됩니다. 즉 JavaScript에서 해당 컨트롤의 ClientID로 해당 컨트롤을 찾을 수 없게 됩니다. 따라서 BehaviorID를 지정했다면, 해당 컨트롤의 ClientID는 무의미 해집니다.

관련글 더보기