2012-07-03 4 views
3

그래서 한 페이지에 여러 번 존재하는 사용자 정의 컨트롤이 있습니다. 백엔드에서 userControl1.someFunction();을 호출 할 수 있습니다. someFunction()을 호출 할 사용자 정의 컨트롤을 지정합니다. 하지만 사용자 정의 컨트롤의 프런트 엔드에 자바 스크립트 함수가 있으면 개별 사용자 컨트롤을 호출 할 수 없습니다. 내가해야 할 일은 javaFunction()을 호출하는 것이지만, 호출 할 사용자 정의 컨트롤을 지정하지 않습니다. 그래서 이것은 내가 할 수 있기를 원하는 것입니다. clientsideUserControl1.javaFunction(); 가능한가요? 내가 뭘했는지 동적으로 함수 이름을 생성하는 것입니다 : clientsideUserControl1_javaFunction(),하지만 난이 일을 더 나은 방법이 있어야 할 것 같아요.ASP.NET 자바 스크립트 기능에 대한 사용자 정의 컨트롤의 범위

답변

1

이 경우 사용자 정의 컨트롤 대신 서버 컨트롤을 사용하는 것이 좋습니다. 서버 컨트롤은 좀 더 복잡해 보이지만 자바 스크립트 함수의 범위를 보호합니다.

다음은 차이점을 설명하는 링크입니다. http://www.hotscripts.com/forums/asp-net/31174-difference-between-user-control-custom-server-controls.html

+0

사용자 정의 컨트롤을 사용하고 싶다면 범위를 보호하는 좋은 방법 인 것 같습니다. -> http://programmerramblings.blogspot.com/2011/07/clientside-api-for-aspnet-user-controls .html –

-1

하나의 가능한 해결책은 이것이다 :

function <%= ClientID %>javaFunction() 
{ 
    //code here 
} 

당신은 당신이 하나 개의 기능을 가지고 있고 그것을 가지고 수있는 컨트롤 플러스 기능 이름 일반적으로

+0

이것은 기본적으로 내가 한 일입니다. 나는 마이크로 소프트의 사람들이 이것을 사용자 컨트롤이라고 부르는 대신 개성을 표현할 수있는 방법을 찾길 바라고있다. –

+0

그것은 작동하지만, 정말 못생긴 해결책입니다. 그 문제를 해결하는 훨씬 더 좋은 방법은 여기에 언급되어 있습니다 : http://stackoverflow.com/questions/4416705/javascript-functions-inside-asp-net-user-control –

+0

@Jakub Szułakiewicz 그 점에 대해 감사드립니다. 그건 그렇고 당신이 정말로 더 나은 솔루션이 필요한 경우, 웹 양식 사용을 중단해야합니다 :)이 대답은 4 살입니다. –

3

의 클라이언트 ID와 각 사용자 제어를위한 함수 선언을해야합니다 전체 페이지에서 작업을 수행하거나 매개 변수 (관심있는 사용자 정의 컨트롤에 대한 참조)를 가져 오도록 변경할 수 있습니다.

그런 식으로 동일한 자바 스크립트 기능을 여러 개 가질 필요는 없습니다.

그래서 그 대신

function CLIENTID_javascriptFunction{ 
} 

의 전역 수준에서 기능을 가질 것 :.

function javascriptFunction(id){ 

} 

및 관심있는 DOM 객체의 ID로 전화 (사용 ClientID를 사용하여 컨트롤의 DOM ID를 가져옵니다.

+0

네, 맞아요.하지만 가끔씩 (CLIENTID_javascriptFunction) 전역 변수에 많은 수의 매개 변수를 전달해야했습니다. 선언 된 함수 –

관련 문제