2012-02-09 2 views
0

JS 코드의 간단한 블록을 사용하여 HTML 브리지를 통해 Silverlight 컨트롤을 호출하려고합니다. 내가 에게과 같이 클릭에 최대 유선 JS 기능이있는 HTML 버튼을 사용하여 모든 쇼를 읽은 다스 정도의 샘플의 모든 :JavaScript에서 Silverlight를 호출하는 것은 HTML 단추로 호출 할 때만 작동합니까?

완벽하게
<input id="Button1" type="button" value="Test Call To SL" onclick="return CallSilverlight()" /> 

function CallSilverlight() { 

    var SLControl = document.getElementById("MySLControl"); 
    SLControl.Content.Page.UpdateText("Hello from Javascript!"); 
} 

위의 작품. JS 함수 'CallSilverlight'가 호출되고 내가 가진 Silverlight 메서드가 호출됩니다. OK를 클릭하십시오. ASP.NET 서버 컨트롤 단추를 누르십시오. 다음 JS 함수가 호출되었습니다. JS 함수를 등록하는 ASP.NET 버튼 클릭 이벤트의 finally 블록에서 충분히 쉽습니다. CallSilverlight() 및 실제로 호출됩니다 (중단 점 작동). 그러나 Silverlight 메서드를 호출 할 때 항상 디버거에서 "알 수없는 예외" 메시지가 나타납니다.

HTML 버튼과 ASP.NET의 주된 차이점이기 때문에 포스트 백이 문제를 일으키는 것으로 생각합니다. ASP.NET 버튼을 사용하여 JS를 호출하는 데 문제가 있습니까? 그렇다면 내가 잘못했을 수도 있습니다.

답변

0

ASP.NET 서버 컨트롤 (즉, 버튼) 을 사용할 수 있습니다. 그러나 클라이언트 쪽 이벤트는 PostBack에 JS를 등록하려고 시도하는 대신 Silverlight 스크립트 가능 메서드를 호출하는 JS 함수를 호출하는 데 사용해야합니다.

<asp:Button ID="Button1" runat="server" Text="Test Call To SL" OnClientClick="return CallSilverlight()" /> 

Button.OnClientClick 재산권 : 그래서 버튼을 다음과 같이 할 필요가
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.button.onclientclick.aspx

+1

좋은 직장. . . . – bperreault

0

프런트 엔드 코드에 액세스 할 필요없이 PostBack이 완료된 후 Silverlight Javascript 등록이 브라우저에서 실행되지 않아 컨트롤이 더 이상 등록되지 않는다고 생각합니다. 이것이 부분 포스트 백이라면 이것이 사실 일 수 있습니다.

등록되어 있는지 확인하기 만하면됩니다.

Silverlight 컨트롤이 Javascript 브리지에 등록하지 못하게하는 또 다른 사항은 CSS에 의해 숨겨져있는 경우입니다.

+0

합리적인 소리 - 당신이 호출 지연 위치에 대한 어떤 제안이 있습니까 그 SL 제어까지 JS 기능 등록되어있다? – atconway

+0

PostBack에서 Silverlight를 등록하려면 Javascript를 보내야 할 것 같습니다. 어쩌면 리터럴 컨트롤에 배치하는 것일 수도 있습니다. 그런 다음 컨트롤을 다시 등록 할 것입니다. 함께 놀면 재미있을 것입니다. – bperreault

관련 문제