2011-11-08 3 views
-2

ClientScript.RegisterStartupScript를 사용하여 사용자 정의 컨트롤에 의해 생성 된 동적 스크립트를 호출하는 페이지에 클라이언트 스크립트가 있습니다. 사용자 제어 스크립트는 동적이며 페이지는 정적입니다.ASP.net 클라이언트 스크립트 주문 문제

내가 가진 문제는 페이지 클라이언트 스크립트가 사용자 정의 컨트롤에 의해 렌더링 된 기능을 찾지 못하는 것입니다. 메소드 서명이 일치하며 모든 것이 좋습니다.

그러나 사용자 제어 스크립트는 정적 스크립트 뒤에 페이지에 포함되어 있습니다. 이것은 변화를 가져올 것입니까? 그렇다면 정적 스크립트 앞에 스크립트를 렌더링하는 방법이 있습니까? MSDN API 문서에 따라 유일한 방법은 모든 스크립트를 하나로 결합하는 것입니다.

동적 스크립트는 사용자 정의 컨트롤의 ClientID를 사용하여 사용자를 고유하게 식별하기 때문에 사치스럽지 않습니다. 사용자 정의 컨트롤이 두 번 이상 나타납니다.

쉬운 방법이 있습니까?

건배

답변

0

내 조언은 당신이 "동적"스크립트 매개 변수로 제어 (들) 아이디 (들)을 소요 정적 하나 만드는 것입니다. 예를 들어, 당신은 같은 것을 할 수 :

function MyFunction(dynamicElementID) 
{ 
    var myelement =document.getElementById(dynamicElementID); 
    //do something with myelement... 
} 

을 한 다음에 코드 숨김, 당신은 그래서이 스크립트를 호출 할 수 있습니다

ClientScript.RegisterStartupScript(this.GetType(),"myscript","MyFunction('"+control.ClientID+"');"); 
0

을 당신이 동적 기능을 가지고 조금 이상한 것을 발견하는 정적 스크립트에 대해 알고 있습니까? 코드 일부를 보여줄 수 있습니까? 나는 아마 당신의 의존성을 푸는 더 좋은 접근법이 있다고 생각한다.

일반적으로 동적 컨트롤은 ID를 일반 정적 함수에 전달합니다.