2014-09-19 2 views
0

이 질문이 이미 게시되어 있고 제안 된 SO 링크를 확인했지만 질문에 정확하게 관련된 것으로 보이지 않는지 확실하지 않습니다. 따라서 누군가가 이것이 중복 가능성이 있다고 생각한다면 제안 된 답변의 링크를 게시하고이 게시물을 용서하십시오.동일한 UserControls Javascript에서 UserControl Server 함수를 호출 할 수 있습니까?

내 문제에 접근하는 방법은 여러 가지가있을 수 있지만 간결함을 위해 JavaScript 또는 JQuery 호출을 해당 서버 측 메서드로 사용하려는 사용자 정의 컨트롤이 있습니다. 자바 스크립트를 사용하여 클라이언트 측을 제어 I은 사용자의 ExecuteThis 메소드를 호출하고 싶은

public partial class UserControls_MyControl : UserControl 
{ 
     public string ExecuteThis(string someValue) 
     { 
      return someValue; 
     } 
} 

:

예를 들어, 내가 같은 내 사용자 제어를위한 일부 서버 측 코드를 가지고 있었다 말한다. 나는 그것이 다른 메카니즘들 가운데서 사용하는 부모 페이지로부터의 호출 이었다면 이것이 가능하다는 것을 안다; PageMethods. 그러나 클라이언트와 서버 코드가 둘 다 사용자 정의 컨트롤 내에있을 때 이것이 어떻게 성취 될 수 있습니다.

나는 WebService 프록시의 사용을 제안하는 몇 가지 게시물과 참조 기사를 훑어 보았고 AJAX를 사용하여 User Controls Client Script에서 WebService를 호출하는 것을 시도해 보았습니다.

function MakeWebServiceCall() 
{ 
    $.ajax({ 
     type: "POST", 
     contentType: "application/json; charset=utf-8", 
     url: "/WebServices/MyService.asmx/SomeMethod", 
     data: "{}", 
     dataType: "json", 
     success: function (msg) { 
      alert(msg.d); 
     }, 
     error: function(error) 
     { 
      alert(error.responseText); 
     } 
    }); 
} 

그러나 어떻게 WebService 콜을 사용자 컨트롤 메소드에 연결할 수 있습니까? 또는 심지어 가능합니까? 아니면 이것을하는 좀 더 우아한 방법이 있습니까?

답변

1

WebMethod로 표시된 사용자 정의 컨트롤을 사용하는 페이지에 메서드가 있어야하며 그 메서드는 사용자 정의 컨트롤 메서드를 호출합니다. 페이지에서

:

[WebMethod] 
public static string ExecuteThis(string somevalue) 
{ 
    return userCtrl.ExecuteThis(somevalue); 
} 

아약스 호출 :

url: "/MyPage.aspx/ExecuteThis" 
+1

감사 PLN, 즉 대답이었다! 당신이 해결책으로 제시 한 것이 무엇인지 알아내는 데 잠깐 시간이 걸렸지 만, 지금 당장 얻었습니다. Web Method가 작동하려면 "Static"으로 표시해야한다고 생각합니까? – Mark

+0

실제로 정적 인 이래로 WebMethods는 페이지에 전혀 액세스 할 수 없으므로 실제로 작동한다는 것을 믿지 않습니다. 그러나 논리를 페이지로 이동하거나 웹 서비스 또는 웹 API를 만들 수는 있지만 실제로 클라이언트 스크립트에서 사용자 정의 컨트롤을 실제로 조작하려고한다고 가정합니다. – pln

관련 문제